一般來說大概有2種較好的方案. 1.通過添加列來替換 標(biāo)識(shí) 列 替換法 1 --添加新列 2 ALTER TABLE TABLENAME ADD ID int 3 --賦值 4 UPDATE TABLENAME SET ID = IDENTITY_ID 5 --刪除 標(biāo)識(shí) 列 6 ALTER TABLE TABLENAME DROP COLUMN IDENTITY_ID 2.顯示值插入(
一般來說大概有2種較好的方案.
1.通過添加列來替換標(biāo)識(shí)列
替換法
1 --添加新列
2 ALTER TABLE TABLENAME ADD ID int
3 --賦值
4 UPDATE TABLENAME SET ID = IDENTITY_ID
5 --刪除標(biāo)識(shí)列
6 ALTER TABLE TABLENAME DROP COLUMN IDENTITY_ID
2.顯示值插入(修改會(huì)話中的IDENTITY_INSERT ),臨時(shí)性 ,不徹底該表列性質(zhì)
SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }
顯式值插入
1 --一般是組合使用,已確保會(huì)話中IDENTITY_INSERT的完整狀態(tài)
2 SET IDENTITY_INSERT TABLENAME ON --關(guān)閉
3 INSERT INTO TABLENAME(IDENTYTY_ID,...) VALUES(...)
4 INSERT INTO TABLENAME(IDENTYTY_ID,...) VALUES(...)
5 INSERT INTO TABLENAME(IDENTYTY_ID,...) VALUES(...)
6 SET IDENTITY_INSERT test OFF --開啟
關(guān)于這種方式,需要注意如下:
A.任何時(shí)候,一個(gè)會(huì)話中只有一個(gè)表的 IDENTITY_INSERT 屬性可以設(shè)置為 ON ,想修改其他表,必須將前一個(gè)ON狀態(tài)改回OFF
B.如果插入值大于表的當(dāng)前標(biāo)識(shí)值,則 SQL Server 自動(dòng)將新插入值作為當(dāng)前標(biāo)識(shí)值使用
C.SET IDENTITY_INSERT 的設(shè)置是在執(zhí)行或運(yùn)行時(shí)設(shè)置的
當(dāng)然還有其他的方案,比如通過系統(tǒng)存儲(chǔ)過程sp_configure 修改列的屬性. 其中選擇看場(chǎng)景吧
內(nèi)容來源:http://www.5aspx.com/sql/2012/5252.html
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com