0

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

1
2
3
4
4

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

INCREMENT_NUMBER integer auto_increment primary key

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

insert
4

1 回答 1

5

如果您想允许重复,请不要将其声明为 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设置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 
于 2012-06-05T22:27:27.540 回答