当前位置:网站首页>TSQL–标示列、GUID 、序列
TSQL–标示列、GUID 、序列
2022-07-05 10:13:00 【全栈程序员站长】
–1. IDENTIY 列不能为空,不能设默认值,创建后不能使用ALTER TABLE TableName ALTER COLUMN修改,每张表只能有一个自增列 –2. 查看当前值:SELECT IDENT_CURRENT(‘TableName’), — 查看增量值:SELECT IDENT_INCR(‘TableName’) — 查看原始种子值:SELECT IDENT_SEED(‘TableName’),起始值, TRUNCATE TABLE 后的初始值。 –3. 允许 显式 插入自增列:SET IDENTITY_INSERT TableName ON; 设置为ON后,允许当前回话对自增列插入时指定值,该设置只影响当前回话,并且同一回话中只允许同时修改一张表的IDENTITY_INSERT 属性,对其他表再次设置时会提示:”表 ‘XXX1’ 的 IDENTITY_INSERT 已经为 ON。无法对表 ‘XXX2’ 执行 SET 操作。“,在对自增列显式插入值后,会检查或修改自增列的当前值为整表中最大值。 –4. IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。 SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。@@IDENTITY能获取到由当前语句引发的触发器,内置存储过程等倒置的自增值。 –如对表T1插入引发触发器对表T2也进行插入,@@IDENTITY得到T2的自增值,而SCOPE_IDENTITY获取当前作用域T1的自增值。
–4. 如果要求值在所有表中唯一,可以使用UNIQUEIDENTIFIER,使用NEWID()来获得唯一值。 –5. 为避免GUID作为聚簇索引照成的页面碎片和页拆分,可以使用NEWSEQUENTIALID()来获取自增的GUID: — CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID()) — 如果考虑安全性和保密性,建议不适用NEWSEQUENTIALID() –6. NEWSEQUENTIALID()只能针对表使用DEFAULT方式来实现。使用 NEWSEQUENTIALID() 生成的每个 GUID 在该计算机上都是唯一的。仅当源计算机具有网卡时,使用 NEWSEQUENTIALID() 生成的 –GUID 在多台计算机上才是唯一的 –7. 序列,2012新特性,数据库级别对象,每次获取后自增。 –============================================= –创建序列 CREATE SEQUENCE [schema_name . ] sequence_name [ AS [ built_in_integer_type | user-defined_integer_type ] ] [ START WITH <constant> ] [ INCREMENT BY <constant> ] [ { MINVALUE [ <constant> ] } | { NO MINVALUE } ] [ { MAXVALUE [ <constant> ] } | { NO MAXVALUE } ] [ CYCLE | { NO CYCLE } ] [ { CACHE [ <constant> ] } | { NO CACHE } ] [ ; ] –============================================= –获取序列 NEXT VALUE FOR [ database_name . ] [ schema_name . ] sequence_name [ OVER (<over_order_by_clause>) ] –============================================= –获取范围的序列值 sp_sequence_get_range [ @sequence_name = ] N'<sequence>’ , [ @range_size = ] range_size , [ @range_first_value = ] range_first_value OUTPUT [, [ @range_last_value = ] range_last_value OUTPUT ] [, [ @range_cycle_count = ] range_cycle_count OUTPUT ] [, [ @sequence_increment = ] sequence_increment OUTPUT ] [, [ @sequence_min_value = ] sequence_min_value OUTPUT ] [, [ @sequence_max_value = ] sequence_max_value OUTPUT ] [ ; ]
–============================================= –创建初始值为1递增1的序列 CREATE SEQUENCE dbo.mySquence AS INT INCREMENT BY 1 START WITH 1
–============================================= –获取下个值 SELECT NEXT VALUE FOR dbo.mySquence –============================================= –使用表排序后获取自增序列 SELECT NEXT VALUE FOR dbo.mySquence OVER (ORDER BY C2) AS RID, C2 FROM [dbo].[TB4] –============================================= –可以在列的DEFAULT中使用序列 ALTER TABLE Test.MyTable ADD DEFAULT N’AdvWorks_’ + CAST(NEXT VALUE FOR Test.CounterSeq AS NVARCHAR(20)) FOR IDColumn;
–============================================ –获取4个连续的递增序列,并返回最小值 DECLARE @range_first_value sql_variant , @range_first_value_output sql_variant ;
EXEC sp_sequence_get_range @sequence_name = N’dbo.mySquence’ , @range_size = 4 , @range_first_value = @range_first_value_output OUTPUT ;
SELECT @range_first_value_output AS FirstNumber ;
–===================================== –查看当前数据库中的自增列 SELECT * FROM sys.identity_columns
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/109933.html原文链接:https://javaforall.cn
边栏推荐
- C language QQ chat room small project [complete source code]
- 驱动制造业产业升级新思路的领域知识网络,什么来头?
- Learning notes 5 - high precision map solution
- Glide conclusion
- QT implements JSON parsing
- 非技术部门,如何参与 DevOps?
- 《剑来》语句摘录(七)
- How does redis implement multiple zones?
- @Serializedname annotation use
- Excerpt from "sword comes" (VII)
猜你喜欢
C language QQ chat room small project [complete source code]
A large number of virtual anchors in station B were collectively forced to refund: revenue evaporated, but they still owe station B; Jobs was posthumously awarded the U.S. presidential medal of freedo
"Everyday Mathematics" serial 58: February 27
@Serializedname annotation use
【Vite】1371- 手把手开发 Vite 插件
自动化规范检查软件如何发展而来?
Learning note 4 -- Key Technologies of high-precision map (Part 2)
Redis如何实现多可用区?
Today in history: the first e-book came out; The inventor of magnetic stripe card was born; The pioneer of handheld computer was born
Events and bubbles in the applet of "wechat applet - Basics"
随机推荐
Click the picture in the mobile browser and the picture will not pop up
"Everyday Mathematics" serial 58: February 27
橫向滾動的RecycleView一屏顯示五個半,低於五個平均分布
[tips] get the x-axis and y-axis values of cdfplot function in MATLAB
Glide Mastery
Learning Note 6 - satellite positioning technology (Part 1)
Workmanager learning 1
【Vite】1371- 手把手开发 Vite 插件
Cerebral cortex: directed brain connection recognition widespread functional network abnormalities in Parkinson's disease
NCP1342芯片替代料PN8213 65W氮化镓充电器方案
[observation] with the rise of the "independent station" model of cross-border e-commerce, how to seize the next dividend explosion era?
Applet image height adaptation and setting text line height
【小技巧】獲取matlab中cdfplot函數的x軸,y軸的數值
钉钉、企微、飞书学会赚钱了吗?
Flink CDC cannot monitor MySQL logs. Have you ever encountered this problem?
The most complete is an I2C summary
How to plan the career of a programmer?
Atcoder beginer contest 254 "e BFS" f st table maintenance differential array GCD "
How does redis implement multiple zones?
StaticLayout的使用详解