0
我正在使用SQL Server 2008.插入,回滾先前插入的數據時會出現異常嗎?
我有一個INSERT
語句,它從一個表插入大量記錄到另一個表。 插入時,我得到了一個主鍵異常。
我的問題是...如果在插入第5行時發生異常...所有四個記錄(之前插入的)是否會回滾?
在此先感謝。
我正在使用SQL Server 2008.插入,回滾先前插入的數據時會出現異常嗎?
我有一個INSERT
語句,它從一個表插入大量記錄到另一個表。 插入時,我得到了一個主鍵異常。
我的問題是...如果在插入第5行時發生異常...所有四個記錄(之前插入的)是否會回滾?
在此先感謝。
是的。除非您在索引上啓用了IGNORE_DUP_KEY
選項,否則它將回滾該語句中插入的所有行。
create table t1
(
col int NOT NULL PRIMARY KEY WITH (IGNORE_DUP_KEY=ON)
)
create table t2
(
col int NOT NULL PRIMARY KEY WITH (IGNORE_DUP_KEY=OFF)
)
INSERT INTO t1 values (1),(1)
INSERT INTO t2 values (1),(1)
SELECT * FROM t1 /*Returns 1 row*/
SELECT * FROM t2 /*Returns 0 rows*/
另一個鏈接引用此SQLServer的特徵:即設置IGNORE_DUP_KEY = ON [創建索引(TSQL)](http://msdn.microsoft.com/en-us/library/ms188783.aspx)。 – hardmath 2011-04-04 14:59:07
你的意思是...右鍵單擊Index ..goto屬性 - >選項 - >「忽略重複值」複選框?對我來說,這是沒有檢查的。 – Relativity 2011-04-04 15:02:06
@Anish - 如果未選中,那麼'IGNORE_DUP_KEY'關閉,所有行都會回滾。 – 2011-04-04 15:06:45