如果我有一个包含INCREMENT_NUMBER列的表A. 我们会说有五行.
1
2
3
4
4
Run Code Online (Sandbox Code Playgroud)
如果用户向表A添加新行,则该行的INCREMENT_NUMBER列应为5.(可能是任何内容,只要它不是1-4号.)请记住
INCREMENT_NUMBER integer auto_increment primary key
Run Code Online (Sandbox Code Playgroud)
将无法工作,因为我需要允许表中的重复,我不认为
insert
Run Code Online (Sandbox Code Playgroud)
如果要允许重复,请不要将其声明为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);
Run Code Online (Sandbox Code Playgroud)
INSERT INTO test
VALUES
(NULL);
SELECT *
FROM test ;
Run Code Online (Sandbox Code Playgroud)
结果是:
increment_number
----------------
1
2
3
4
4
5
Run Code Online (Sandbox Code Playgroud)
在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');
Run Code Online (Sandbox Code Playgroud)
然后测试2:
SET IDENTITY_INSERT test OFF ;
INSERT INTO test (name)
VALUES
('Elaine') ;
SELECT *
FROM test ;
Run Code Online (Sandbox Code Playgroud)
结果是:
increment_number | name
---------------------------
1 Alex
2 Bill
3 Cathy
4 Diana
4 Dean
5 Elaine
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |