ฉันกำลังอยู่ระหว่างการทดสอบและสร้างตารางเฉพาะที่ใช้ประโยชน์จาก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
เมื่อเสร็จแล้วฉันจะรันคำสั่ง insert ต่อไปนี้ 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'
)
ตอนนี้ไม่มีปัญหากับการป้อนข้อมูลลงในตาราง ความท้าทายที่ฉันพบคือเมื่อฉันลบตารางปล่อย schema และลำดับจากนั้นสร้างตารางลำดับและ schema ที่SEQUENCE
หยิบขึ้นมาจากหมายเลขสุดท้ายในชาติฐานข้อมูลก่อนหน้าและไม่รีเซ็ตกลับเป็นหนึ่ง
ตัวอย่างเช่นหากหมายเลขสุดท้ายในลำดับนั้นมีจำนวน 634,534 หมายเลขลำดับถัดไปในตารางใหม่คือ 634,535
หลังจากลบตารางและวางสคีมาและลำดับฉันรันต่อไปนี้เพื่อตรวจสอบการลบลำดับและสคีมา:
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
GO
SELECT * FROM sys.sequences
GO
ฉันนิ่งงันว่าทำไมสิ่งนี้จึงเกิดขึ้น มีคำสั่งอื่นที่ฉันหายไปที่นี่ซึ่งจะช่วยให้ฉัน จำกัด สิ่งที่เกิดขึ้นที่นี่?
ฉันควรทราบว่าตารางนี้เป็นของฐานข้อมูลที่มี 7 ตารางอื่น ๆ ทั้งหมดทำงานSEQUENCE
คำสั่งอย่างถูกต้อง
นี่คือการติดตั้ง SQL 2012 SP1 Enterprise Edition