如果我有一个包含 INCREMENT_NUMBER 列的表 A。我们会说有五行。
1
2
3
4
4
如果用户向表 A 添加新行,则该行的 INCREMENT_NUMBER 列应为 5。(可以是任何值,只要不是数字 1-4。)请记住
INCREMENT_NUMBER integer auto_increment primary key
将不起作用,因为我需要允许表格中的重复项,我不认为
insert
如果我有一个包含 INCREMENT_NUMBER 列的表 A。我们会说有五行。
1
2
3
4
4
如果用户向表 A 添加新行,则该行的 INCREMENT_NUMBER 列应为 5。(可以是任何值,只要不是数字 1-4。)请记住
INCREMENT_NUMBER integer auto_increment primary key
将不起作用,因为我需要允许表格中的重复项,我不认为
insert
如果您想允许重复,请不要将其声明为 a 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