Я перебуваю в процесі тестування та заповнення конкретної таблиці, яка використовує SEQUENCE
об'єкт. У цьому процесі я тестую заповнення таблиці десятками тисяч рядків вставки (оскільки мені невідомо, як це програмувати). Проблема, яку я бачу з цією конкретною таблицею, полягає в тому, що коли я запускаю черговий тест сукупності, показник SEQUENCE
не повертається до першого числа, яке я хочу (а це 1).
Коли я хочу повторно запустити новий тест, я видаляю відповідну таблицю, після чого виконайте наступне:
DROP SEQUENCE foo.fee;
GO
DROP SCHEMA foo;
GO
Коли я хочу повторно запустити тест, я запускаю наступні SCHEMA
& SEQUENCE
команди, які запускаються у порядку нижче:
CREATE SCHEMA foo;
GO
CREATE SEQUENCE foo.fee
START WITH 1
INCREMENT BY 1
NO CYCLE
NO CACHE;
GO
Потім я створю таблицю:
CREATE TABLE foo.sample_table_with_data
(order_number bigint PRIMARY KEY NOT NULL,
sample_column_one nvarchar(max) NULL,
sample_column_two nvarchar(max) NULL,
sample_column_three nvarchar(max) NULL)
GO
Після того, як це завершено, я запускаю наступну команду вставки 50 000 разів:
INSERT INTO [foo].[sample_table_with_data]
(
[order_number],
[sample_column_one],
[sample_column_two],
[sample_column_three]
)
VALUES
(
NEXT VALUE FOR foo.fee,
'Blah',
'Blah Blah',
'Blah Blah Blah'
)
Зараз абсолютно немає проблем із введенням даних у таблицю. Проблема, з якою я стикаюсь, полягає в тому, що коли я видаляю таблицю, скидаю схему та послідовність, а потім заново створюю таблицю, послідовність та схему, SEQUENCE
вибирає з останнього числа попереднього втілення бази даних та не скидає назад на одну.
Наприклад, якщо останнім числом у послідовності є 634,534, наступний номер послідовності в новій таблиці становить 634,535.
Після видалення таблиці та скидання схеми та послідовності я запускаю наступне для перевірки видалення послідовності та схеми:
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
GO
SELECT * FROM sys.sequences
GO
Я наткнувся на те, чому це відбувається. Чи є інша команда, яку мені тут не вистачає, яка допомогла б мені локалізувати, що саме тут відбувається?
Слід зазначити, що ця таблиця належить до бази даних із 7 іншими таблицями, у яких SEQUENCE
команда працює правильно.
Це встановлення SQL 2012 SP1 Enterprise Edition.