<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
SQL SERVER2012 之前版本,一般採用GUID或者IDENTITY來作為標示符。在2012中,微軟終於增加了 SEQUENCE 物件,功能和效能都有了很大的提高。
序列是一種使用者定義的架構繫結物件,它根據建立該序列時採用的規範生成一組數值。 這組數值以定義的間隔按升序或降序生成,並且可根據要求迴圈(重複)。
bigint
。序列的限制(limitation)有二個
在以下情況下將使用序列,而非標識列:
我們可以在SSMS中建立也可以使用SQL SERVER指令碼建立序列物件:
1、使用預設值建立序列:若要建立從 -2,147,483,648 到 2,147,483,647 且增量為 1 的整數序列號。
CREATE SEQUENCE Schema.SequenceName AS int INCREMENT BY 1 ;
2、若要建立類似於從 1 到 2,147,483,647 且增量為 1 的標識列的整數序列號,請使用以下語句。
CREATE SEQUENCE Schema.SequenceName AS int START WITH 1 INCREMENT BY 1 ;
3、使用所有引數建立序列
以下範例使用 decimal 資料型別(範圍為 0 到 255)建立一個名為 DecSeq 的序列 。 序列以 125 開始,每次生成數位時遞增 25。 因為該序列設定為可迴圈,所以,當值超過最大值 200 時,序列將從最小值 100 重新開始。
CREATE SEQUENCE Test.DecSeq AS decimal(3,0) START WITH 125 INCREMENT BY 25 MINVALUE 100 MAXVALUE 200 CYCLE CACHE 3 ;
執行以下語句可檢視第一個值;START WITH
選項為 125。將該語句再執行三次,以返回 150、175 和 200。再次執行該語句,以檢視起始值如何迴圈回到 MINVALUE
選項值 100。
SELECT NEXT VALUE FOR Test.DecSeq;
下面的範例建立一個名為 Test 的架構、一個名為 Orders 的表以及一個名為 CountBy1 的序列,然後使用 NEXT VALUE FOR 函數將行插入到該表中。
--Create the Test schema CREATE SCHEMA Test ; GO -- Create a table CREATE TABLE Test.Orders (OrderID int PRIMARY KEY, Name varchar(20) NOT NULL, Qty int NOT NULL); GO -- Create a sequence CREATE SEQUENCE Test.CountBy1 START WITH 1 INCREMENT BY 1 ; GO -- Insert three records INSERT Test.Orders (OrderID, Name, Qty) VALUES (NEXT VALUE FOR Test.CountBy1, 'Tire', 2) ; INSERT test.Orders (OrderID, Name, Qty) VALUES (NEXT VALUE FOR Test.CountBy1, 'Seat', 1) ; INSERT test.Orders (OrderID, Name, Qty) VALUES (NEXT VALUE FOR Test.CountBy1, 'Brake', 1) ; GO -- View the table SELECT * FROM Test.Orders ; GO
下面是結果集:
OrderID Name Qty
1 Tire 2
2 Seat 1
3 Brake 1
SELECT NEXT VALUE FOR CountBy5 AS SurveyGroup, Name FROM sys.objects ;
SELECT NEXT VALUE FOR Samples.IDLabel OVER (ORDER BY Name) AS NutID, ProductID, Name, ProductNumber FROM Production.Product WHERE Name LIKE '%nut%' ;
從序列物件中返回一系列序列值。 序列物件生成和發出請求的值數目,併為應用程式提供與該系列序列值相關的後設資料。
以下語句從 RangeSeq 序列物件中獲取四個序列號,並向用戶返回過程中的所有輸出值。
DECLARE @range_first_value_output sql_variant ; EXEC sys.sp_sequence_get_range @sequence_name = N'Test.RangeSeq' , @range_size = 4 , @range_first_value = @range_first_value_output OUTPUT ; SELECT @range_first_value_output AS FirstNumber ;
下面的範例建立一個包含該範例的三行的架構和表。 然後,該範例新增一個新列並且刪除舊列。
使用 Transact-SQL 的 SELECT *
語句將這個新列作為最後一列接收,而非作為第一列接收。 如果這樣做是不可接受的,則您必須建立全新的表,將資料移到該表中,然後針對這個新表重新建立許可權。
-- 新增沒有IDENTITY屬性的新列 ALTER TABLE Test.Department ADD DepartmentIDNew smallint NULL GO -- 將值從舊列複製到新列 UPDATE Test.Department SET DepartmentIDNew = DepartmentID ; GO -- 刪除舊列上的主鍵約束 ALTER TABLE Test.Department DROP CONSTRAINT [PK_Department_DepartmentID]; -- 刪除舊列 ALTER TABLE Test.Department DROP COLUMN DepartmentID ; GO -- 將新列重新命名為舊列名 EXEC sp_rename 'Test.Department.DepartmentIDNew', 'DepartmentID', 'COLUMN'; GO -- 將新列更改為NOT NULL ALTER TABLE Test.Department ALTER COLUMN DepartmentID smallint NOT NULL ; -- 新增唯一的主鍵約束 ALTER TABLE Test.Department ADD CONSTRAINT PK_Department_DepartmentID PRIMARY KEY CLUSTERED (DepartmentID ASC) ; -- 從DepartmentID列中獲取當前的最高值,並建立一個用於列的序列。(返回3。) SELECT MAX(DepartmentID) FROM Test.Department ; --使用下一個期望值(4)作為START WITH VALUE; CREATE SEQUENCE Test.DeptSeq AS smallint START WITH 4 INCREMENT BY 1 ; GO -- 為DepartmentID列新增一個預設值 ALTER TABLE Test.Department ADD CONSTRAINT DefSequence DEFAULT (NEXT VALUE FOR Test.DeptSeq) FOR DepartmentID; GO -- 檢視結果 SELECT DepartmentID, Name, GroupName FROM Test.Department ; -- Test insert INSERT Test.Department (Name, GroupName) VALUES ('Audit', 'Quality Assurance') ; GO -- 檢視結果 SELECT DepartmentID, Name, GroupName FROM Test.Department ; GO
重新開始 Samples.IDLabel
序列。
ALTER SEQUENCE Samples.IDLabel RESTART WITH 1 ;
在生成編號後,序列物件與其生成的編號之間沒有延續關係,因此可以刪除序列物件,即使生成的編號仍在使用。
當序列物件由儲存過程或觸發器參照時,可以刪除序列物件,因為序列物件未繫結到架構上。 如果序列物件是作為表中的預設值參照的,則無法刪除序列物件。 錯誤訊息將列出參照序列的物件。
以下範例從當前資料庫中刪除一個名為 CountBy1
的序列物件。
DROP SEQUENCE CountBy1 ;
有關序列的資訊,請查詢 sys.sequences。
執行以下程式碼,以確認快取大小並檢視當前值。
SELECT cache_size, current_value FROM sys.sequences WHERE name = 'DecSeq' ;
到此這篇關於SQL Server序列SEQUENCE的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45