我有一张表,其中键是主键。我想添加seqNo
密钥,该密钥应自动递增,但不允许将其设置为自动递增。
因为已经有一个主键,
是否可以使seqNo自动增量?目前seqNo
不存在。我想添加它
答案 0 :(得分:1)
您不能在SQL表中拥有两个标识列,但仍可以创建序列。这是链接http://technet.microsoft.com/en-us/library/ff878091.aspx
答案 1 :(得分:1)
您有以下选择。
答案 2 :(得分:1)
Vignesh,请考虑以下内容......
DROP TABLE IF EXISTS test;
CREATE TABLE test
( testID int(11) NOT NULL
, string varchar(45) DEFAULT NULL
, testInc int(11) NOT NULL AUTO_INCREMENT
, PRIMARY KEY (testID)
, KEY testInc (testInc)
);
INSERT INTO test
(testID
, string
) values
(1
,'Hello'
);
INSERT INTO test (testid,string) SELECT x.testid + y.max_test,string FROM test x JOIN (SELECT MAX(testid) max_test FROM test)y;
INSERT INTO test (testid,string) SELECT x.testid + y.max_test,string FROM test x JOIN (SELECT MAX(testid) max_test FROM test)y;
INSERT INTO test (testid,string) SELECT x.testid + y.max_test,string FROM test x JOIN (SELECT MAX(testid) max_test FROM test)y;
Query OK, 4 rows affected (0.03 sec)
SELECT * FROM test;
+--------+--------+---------+
| testID | string | testInc |
+--------+--------+---------+
| 1 | Hello | 1 |
| 2 | Hello | 2 |
| 3 | Hello | 3 |
| 4 | Hello | 4 |
| 5 | Hello | 6 |
| 6 | Hello | 7 |
| 7 | Hello | 8 |
| 8 | Hello | 9 |
+--------+--------+---------+
请注意,行数(8)和testinc(9)的值不同。这不是OP想要的。我用来生成PK的MAX()技巧也不好,因为它会受到运行时错误的影响。
相同http://www.sqlfiddle.com/#!2/d29a5b/1
的小提琴重点是......存储顺序ID是没有意义的。