0

列 INCREMENT_NUMBER を持つテーブル A があるとします。5 つの行があるとします。

1
2
3
4
4

ユーザーがテーブル A に新しい行を追加した場合、その行の INCREMENT_NUMBER 列は 5 になるはずです (1 から 4 までの数字でない限り、何であってもかまいません)。

INCREMENT_NUMBER integer auto_increment primary key

テーブル内の重複を許可する必要があり、そうは思わないため、機能しません

insert
4

1 に答える 1

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 
于 2012-06-05T22:27:27.540 に答える