如何添加尚不存在的整数?

时间:2012-06-05 22:21:14

标签: sql sql-server

如果我有一个包含INCREMENT_NUMBER列的表A.我们会说有五行。

1
2
3
4
4

如果用户向表A添加新行,则该行的INCREMENT_NUMBER列应为5.(可以是任何内容,只要它不是数字1-4。)请记住

INCREMENT_NUMBER integer auto_increment primary key

不起作用,因为我需要在表格中允许重复,我不认为

insert

1 个答案:

答案 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设置ONOFF才能有类似行为:

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