Run*_*ble 2 mysql sql auto-increment mysql-error-1075
我有一个有一个AUTO_INCREMENT字段的表.目前,它也是一个主要的关键.
但是,在某些情况下我需要此AUTO_INCREMENT列以允许重复.换句话说 - 两个不同的行在列内可以具有相同的值AUTO_INCREMENT.这意味着拥有一个不是PRIMARY KEY的AUTO_INCREMENT字段.
这可能吗?
我猜它不是,因为每当我尝试这样做时,我都会收到此错误:
ERROR 1075 (42000) at line 130: Incorrect table definition; there can be only one auto column and it must be defined as a key
我喜欢使用AUTO_INCREMENT字段,因为它使我不必手动存储/增加数据库中其他位置的单独计数器.我可以插入表中并获取插入的值.但是,如果我不能重复,似乎我将不得不使用一个单独的表来跟踪并手动增加该字段.
更新:作为一个快速说明,我已经熟悉将AUTO_INCREMENT字段与另一个键分组,如此处所述.让我们假设为了论证,由于数据库中的其他约束,此解决方案将无法工作.
MySQL中的自动增量字段必须是密钥(即索引)的一部分,但不一定是主键或唯一键的一部分.
CREATE TABLE mytable (
id INT PRIMARY KEY,
otto INT AUTO_INCREMENT,
KEY (otto)
);
-- allow the auto-increment to generate a value
INSERT INTO mytable (id, otto) VALUES (123, DEFAULT);
SELECT * FROM mytable;
> 123, 1
-- specify a duplicate value, overriding the auto-increment mechanism
INSERT INTO mytable (id, otto) VALUES (456, 1);
SELECT * FROM mytable;
> 123, 1
> 456, 1
-- allow the auto-increment to generate another value
INSERT INTO mytable (id, otto) VALUES (789, DEFAULT);
SELECT * FROM mytable;
> 123, 1
> 456, 1
> 789, 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1392 次 |
| 最近记录: |