[color=indigo][/color][size=large]想要將值插入到自動編號(或者說是標識列,identity)中去,需要設定 set identity_insert
示例:1.首先建立乙個有標識列的表:
create table products (id int identity primary key, product varchar(40))
2.嘗試在表中做以下操作:
insert into products (id, product) values(3, 'garden shovel')
結果會導致錯誤:「當 identity_insert 設定為 off 時,不能向表 'products' 中的標識列插入顯式值。」
3.改用:
set identity_insert products on
insert into products (id, product) values(1, 'garden shovel')
返回正確。
4.建立另外乙個表products2,嘗試相同插入操作:
create table products2 (id int identity primary key, product varchar(40))
然後執行:
set identity_insert products2 on
insert into products2 (id, product) values(1, 'garden shovel')
導致錯誤:「表 'material.dbo.products' 的 identity_insert 已經為 on。無法對錶 'products2' 執行 set 操作。」
改為執行:
set identity_insert products off
set identity_insert products2 on
insert into products2 (id, product) values(2, 'garden shovel')
執行通過。
5.嘗試以下操作:
set identity_insert products2 on
insert into products2 select * from products
導致錯誤:「僅當使用了列的列表,並且 identity_insert 為 on 時,才能在表 'products2' 中為標識列指定顯式值。」
6.改為:
set identity_insert products2 on
insert into products2 (id, product) select * from products
執行通過。
總結:1.每一次連線會話中的任一時刻,只能對乙個表設定identity_insert on,且設定只對當前會話有效;
2.在對標識列執行插入操作進,一定要列出此標識列(當然,同時也就需要列出相關的其他列了)。
附:set identity_insert
允許將顯式值插入表的標識列中。
語法set identity_insert [ database.[ owner.] ]
引數database
是指定的表所駐留的資料庫名稱。
owner
是表所有者的名稱。
table
是含有標識列的表名。
注釋任何時候,會話中只有乙個表的 identity_insert 屬性可以設定為 on。如果某個表已將此屬性設定為 on,並且為另乙個表發出了 set identity_insert on 語句,則 microsoft® sql server™ 返回乙個錯誤資訊,指出 set identity_insert 已設定為 on 並報告此屬性已設定為 on 的表。
如果插入值大於表的當前標識值,則 sql server 自動將新插入值作為當前標識值使用。
set identity_insert 的設定是在執行或執行時設定,而不是在分析時設定。
許可權執行許可權預設授予 sysadmin 固定伺服器角色和 db_owner 及 db_ddladmin 固定資料庫角色以及物件所有者。
示例下例建立乙個含有標識列的表,並顯示如何使用 set identity_insert 設定填充由 delete 語句導致的標識值中的空隙。
-- create products table.
create table products (id int identity primary key, product varchar(40))
go-- inserting values into products table.
insert into products (product) values ('screwdriver')
insert into products (product) values ('hammer')
insert into products (product) values ('saw')
insert into products (product) values ('shovel')
go-- create a gap in the identity values.
delete products
where product = 'saw'
goselect *
from products
go-- attempt to insert an explicit id value of 3;
-- should return a warning.
insert into products (id, product) values(3, 'garden shovel')
go-- set identity_insert to on.
set identity_insert products on
go-- attempt to insert an explicit id value of 3
insert into products (id, product) values(3, 'garden shovel').
goselect *
from products
go-- drop products table.
drop table products
go[/size]
MVC Rounting System 學習心得
1.所有的routing 規則都存在routtable.routes這個全域性的collection當中 routeconfig.registerroutes routetable.routes 2.下面是具體的方法,將所有的routing規則註冊到全域性變數裡。public static void...
linux mount 與umount 學習心得
要將檔案系統掛載到我們的 linux 系統上,就要使用 mount 這個指令 用法 mount tonl 裝置名稱代號 掛載點 mount a 引數 a 依照 etc fstab 的內容將所有相關的磁碟都掛上來!n 一般來說,當我們掛載檔案系統到 linux 上頭時,linux 會主動的將 目前的 ...
心形函式 封心
這個是 html5實驗室 canvas世界 中的乙個例子,最大的收穫當然是心形函式 x 2 y 2 1 x 2 y 3 0。有了前面幾個動畫做鋪墊,這個還是比較容易就完成了,沒有遇到什麼奇特的問題。不過也因為比較輕鬆,的組織不是很認真,也不想去改了。值得一提的是這個動畫很容易另行發揮,我在除錯的過程...