久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

DMSQL DM自增列怎么用

177次閱讀
沒有評論

共計 4470 個字符,預計需要花費 12 分鐘才能閱讀完成。

這篇文章給大家分享的是有關 DMSQL DM 自增列怎么用的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。

DM 自增列的使用
DM 自增列定義
1.自增列功能定義
在表中創建一個自增列。該屬性與 CREATE TABLE 語句一起使用,一個表只能有一個自增列。
語法格式
IDENTITY [(種子, 增量) ]
參數
1.種子 裝載到表中的第一個行所使用的值;
2.增量 增量值,該值被添加到前一個已裝載的行的標識值上。增量值可以為正數或負數,但不能為 0。

使用說明
1.IDENTITY 適用于 int(-2147483648~+2147483647)、bigint(-263~+263-2) 類型的列;每個表只能創建一個自增列;
2.不能對自增列使用 DEFAULT 約束;
3.必須同時指定種子和增量值,或者二者都不指定。如果二者都未指定,則取默認值(1,1);若種子或增量為小數類型,報錯;
4.最大值和最小值為該列的數據類型的邊界;
5.建表種子和增量大于最大值或者種子和增量小于最小值時報錯;
6.自增列一旦生成,無法更新,不允許用 Update 語句進行修改;
7. 臨時表、列存儲表、水平分區表、垂直分區表不支持使用自增列。

2.自增列查詢函數
1) IDENT_SEED(函數)
語法格式:
IDENT_SEED (tablename)
功能:返回種子值,該值是在帶有自增列的表中創建自增列時指定的。
參數:tablename:是帶有引號的字符串常量,也可以是變量、函數或列名。tablename 的數據類型為 char 或 varchar。其含義是表名,可帶模式名前綴。
返回類型:返回數據類型為 int / NULL
2) IDENT_INCR(函數)
語法格式:
IDENT_INCR (tablename)
功能:返回增量值,該值是在帶有自增列的表中創建自增列時指定的。
參數:tablename:是帶有引號的字符串常量,也可以是變量、函數或列名。tablename 的數據類型為 char 或 varchar。其含義是表名,可帶模式名前綴。
返回類型:返回數據類型為 int / NULL
例如用自增列查詢函數獲得表 PERSON_TYPE 的自增列的種子和增量信息。

SQL  SELECT IDENT_SEED( PERSON.PERSON_TYPE 
LINEID IDENT_SEED(PERSON.PERSON_TYPE)
---------- --------------------------------
1 1
used time: 1.529(ms). Execute id is 46903.
SQL  SELECT IDENT_INCR( PERSON.PERSON_TYPE 
LINEID IDENT_INCR(PERSON.PERSON_TYPE)
---------- --------------------------------
1 1
used time: 0.956(ms). Execute id is 46905.

SET IDENTITY_INSERT 屬性
設置是否允許將顯式值插入表的自增列中。
語法格式
SET IDENTITY_INSERT [模式名 .] 表名 ON | OFF;
參數
1. 模式名 指明表所屬的模式,缺省為當前模式;
2. 表名 指明含有自增列的表名。
使用說明
1.IDENTITY_INSERT 屬性的默認值為 OFF。SET IDENTITY_INSERT 的設置是在執行或運行時進行的。當一個連接結束,IDENTITY_INSERT 屬性將被自動還原為 OFF;
2.DM 要求一個會話連接中只有一個表的 IDENTITY_INSERT 屬性可以設置為 ON,當設置一個新的表 IDENTITY_INSERT 屬性設置為 ON 時,之前已經設置為 ON 的表會自動還原為 OFF。當一個表的 IDENTITY_INSERT 屬性被設置為 ON 時,該表中的自動增量列的值由用戶指定。如果插入值大于表的當前標識值(自增列當前值),則 DM 自動將新插入值作為當前標識值使用,即改變該表的自增列當前值;否則,將不影響該自增列當前值;
3.當設置一個表的 IDENTITY_INSERT 屬性為 OFF 時,新插入行中自增列的當前值由系統自動生成,用戶將無法指定;
4.自增列一經插入,無法修改;
5.手動插入自增列,除了將 IDENTITY_INSERT 設置為 ON,還要求在插入列表中明確指定待插入的自增列列名。插入方式與非 IDENTITY 表是完全一樣的。如果插入時,既不指定自增列名也不給自增列賦值,則新插入行中自增列的當前值由系統自動生成。

舉例說明
例如 SET IDENTITY_INSERT 的使用
1) PERSON_TYPE 表中的 PERSON_TYPEID 列是自增列

SQL  select * from person.person_type;
LINEID PERSON_TYPEID NAME
---------- ------------- --------
1 1  采購經理
2 2  采購代表
3 3  銷售經理
4 4  銷售代表
5 9  衛生員
6 10  保潔員
6 rows got
used time: 12.207(ms). Execute id is 46927.

2) 在該表中插入數據,自增列的值由系統自動生成。

SQL  INSERT INTO PERSON.PERSON_TYPE(NAME) VALUES( 銷售總監 
affect rows 1
used time: 0.884(ms). Execute id is 46930.
SQL  INSERT INTO PERSON.PERSON_TYPE(NAME) VALUES( 人力資源部經理 
affect rows 1
used time: 0.749(ms). Execute id is 46931.
SQL  commit;
executed successfully
used time: 21.221(ms). Execute id is 46933.
SQL  select * from person.person_type;
LINEID PERSON_TYPEID NAME
---------- ------------- --------------
1 1  采購經理
2 2  采購代表
3 3  銷售經理
4 4  銷售代表
5 9  衛生員
6 10  保潔員
7 11  銷售總監
8 12  人力資源部經理
8 rows got
used time: 0.445(ms). Execute id is 46934.

3) 當插入數據并且要指定自增列的值時,必須要通過語句將 IDENTITY_INSERT 設置為 ON 時,插入語句中必須指定 PERSON_TYPEID 中要插入的列。例如:

SQL  SET IDENTITY_INSERT PERSON.PERSON_TYPE ON;
executed successfully
used time: 32.673(ms). Execute id is 46938.
SQL  INSERT INTO PERSON.PERSON_TYPE(PERSON_TYPEID, NAME) VALUES( 14,  廣告部經理 
affect rows 1
used time: 0.966(ms). Execute id is 46941.
SQL  INSERT INTO PERSON.PERSON_TYPE(PERSON_TYPEID, NAME) VALUES( 15,  財務部經理 
affect rows 1
used time: 0.788(ms). Execute id is 46943.
SQL  commit;
executed successfully
used time: 25.501(ms). Execute id is 46944.
SQL  select * from person.person_type;
LINEID PERSON_TYPEID NAME
---------- ------------- --------------
1 1  采購經理
2 2  采購代表
3 3  銷售經理
4 4  銷售代表
5 9  衛生員
6 10  保潔員
7 11  銷售總監
8 12  人力資源部經理
9 14  廣告部經理
10 15  財務部經理
10 rows got
used time: 0.467(ms). Execute id is 46945.

4) 不允許用戶修改自增列的值。

SQL  UPDATE PERSON.PERSON_TYPE SET PERSON_TYPEID = 14 WHERE NAME =  廣告部經理 
UPDATE PERSON.PERSON_TYPE SET PERSON_TYPEID = 14 WHERE NAME =  廣告部經理 
[-2664]:Error in line: 1
Try to alter identity column [PERSON_TYPEID].
used time: 0.565(ms). Execute id is 0.

5) 還原 IDENTITY_INSERT 屬性。

SQL  SET IDENTITY_INSERT PERSON.PERSON_TYPE OFF;
executed successfully
used time: 0.597(ms). Execute id is 46951.

6) 插入后再次查詢。注意觀察自增列當前值的變化。

SQL  SET IDENTITY_INSERT PERSON.PERSON_TYPE OFF;
executed successfully
used time: 0.597(ms). Execute id is 46951.
SQL  INSERT INTO PERSON.PERSON_TYPE(NAME) VALUES( 市場總監 
affect rows 1
used time: 1.013(ms). Execute id is 46954.
SQL  commit;
executed successfully
used time: 16.449(ms). Execute id is 46955.
SQL  select * from person.person_type;
LINEID PERSON_TYPEID NAME
---------- ------------- --------------
1 1  采購經理
2 2  采購代表
3 3  銷售經理
4 4  銷售代表
5 9  衛生員
6 10  保潔員
7 11  銷售總監
8 12  人力資源部經理
9 14  廣告部經理
10 15  財務部經理
11 16  市場總監
11 rows got
used time: 1.000(ms). Execute id is 46956.

感謝各位的閱讀!關于“DMSQL DM 自增列怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-20發表,共計4470字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 化州市| 布拖县| 东乌珠穆沁旗| 高陵县| 庆云县| 开封县| 丰县| 勃利县| 拜泉县| 乌鲁木齐市| 张北县| 名山县| 于都县| 博湖县| 揭西县| 玉树县| 安溪县| 耿马| 界首市| 平安县| 泰州市| 新宁县| 洮南市| 广昌县| 仲巴县| 迭部县| 广汉市| 平武县| 新蔡县| 广昌县| 泰来县| 镇宁| 云南省| 万山特区| 丹凤县| 平顶山市| 依兰县| 广南县| 蒙城县| 华阴市| 鱼台县|