Я нахожусь в процессе тестирования и заполнения определенной таблицы, которая использует 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
После того, как это будет выполнено, я запускаю следующую команду вставки 50000 раз:
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.
источник