如果我有一个包含INCREMENT_NUMBER列的表A.我们会说有五行。
1
2
3
4
4
如果用户向表A添加新行,则该行的INCREMENT_NUMBER列应为5.(可以是任何内容,只要它不是数字1-4。)请记住
INCREMENT_NUMBER integer auto_increment primary key
不起作用,因为我需要在表格中允许重复,我不认为
insert
答案 0 :(得分:5)
如果您想允许重复,请不要将其声明为PRIMARY KEY
(并且不会对其设置UNIQUE
约束。)
在 MySQL 中,AUTO_INCREMENT
在这种情况下允许重复 - 您只需在其上添加一个简单的索引:
CREATE TABLE test
( increment_number INTEGER NOT NULL AUTO_INCREMENT
, INDEX inc_index (increment_number)
) ;
INSERT INTO test
VALUES (1),(2),(3),(4),(4);
在SQL-Fiddle中测试:test-1
INSERT INTO test
VALUES
(NULL);
SELECT *
FROM test ;
结果:
increment_number
----------------
1
2
3
4
4
5
在 SQL-Server 中,您必须切换IDENTITY_INSERT
设置ON
和OFF
才能有类似行为:
CREATE TABLE test
( increment_number INT IDENTITY(1,1) NOT NULL
, name varchar(20) NOT NULL
) ;
SET IDENTITY_INSERT test ON ;
INSERT INTO test (increment_number, name)
VALUES
(1, 'Alex'),
(2, 'Bill'),
(3, 'Cathy'),
(4, 'Diana'),
(4, 'Dean');
然后test-2:
SET IDENTITY_INSERT test OFF ;
INSERT INTO test (name)
VALUES
('Elaine') ;
SELECT *
FROM test ;
结果:
increment_number | name
---------------------------
1 Alex
2 Bill
3 Cathy
4 Diana
4 Dean
5 Elaine