我想创建一个表,以便我有一个基于日期的ID号,以及一个ID作为唯一的主键。
即:
2015-2-1-1
2015-2-1-2
但是,如果我创建:
2015-2-2-1
计数器应该从1开始重新启动。
我尝试过使用以下内容:
CREATE TABLE `invoices` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`date` date NOT NULL,
`po_id` int(11) unsigned DEFAULT NULL,
`description` varchar(256) NOT NULL,
`client_id` int(11) unsigned DEFAULT NULL,
`status` enum('unpaid','paid','partial') DEFAULT 'unpaid',
PRIMARY KEY (`id`,`date`),
UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;
但它并不像我想的那样工作。
答案 0 :(得分:0)
如果你想要一个两列主键(date,id)和id,它应该从每个日期的1开始自动递增。只需为您的主要列密钥设置date
,并在密钥定义的第二个位置设置id
。
CREATE TABLE `invoices` (
`date` date NOT NULL,
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`po_id` int(11) unsigned DEFAULT NULL,
`description` varchar(256) NOT NULL,
`client_id` int(11) unsigned DEFAULT NULL,
`status` enum('unpaid','paid','partial') DEFAULT 'unpaid',
PRIMARY KEY (`date`, `id`)
) ENGINE=MyIsam DEFAULT CHARSET=latin1;
将设置内部密钥作为示例,但您会看到两列:
+----+------------+
| id | date |
+----+------------+
| 1 | 2012-01-01 |
| 2 | 2012-01-01 |
| 1 | 2012-01-02 |
| 2 | 2012-01-02 |
+----+------------+
编辑:您必须使用MyIsam格式