2010-05-03 173 views

回答

2

你可以使用INSTEAD OFtrigger來實現類似這樣的事情,攔截默認的插入操作以執行檢測到現有行的更新。與MySql的變體不同,但更靈活。

-2

我不知道你的申請是什麼 - 也許REPLACE可以幫助?!

+1

除了文本替換MS SQL Server沒有這樣的功能。有一個MERGE,但只有SQL2008。 – 2010-05-03 19:20:50

2

我不熟悉mysql INSERT IGNORE功能,但我正在閱讀的文檔聽起來像它所做的一切都是忽略(無提示失敗)嘗試插入帶有表中已存在的主鍵的記錄。

如果這是您要查找的內容,SQL Server具有類似的功能,但您在創建時必須將其應用於主鍵或唯一約束。

閱讀關於the IGNORE_DUP_KEY option的獨特索引。

+1

不幸的是,它不工作,因爲我認爲它會。它不會發出錯誤,但會給出警告,這也不是我的解決方案。 – JohnM2 2010-05-03 20:04:35

0

我會說你有兩個可行的方案:

一個是你嘗試之前過濾掉錯誤的價值觀。也許增加一個where子句就像:

WHERE newValues NOT IN (SELECT pk_col FROM yourTable) 

或者你可以使用try-catch,試試這個:

BEGIN TRY 
    INSERT INTO yourTable(pk_col,other_date) 
    SELECT 'PK Value That Already Exists','saflaksdfj' 
END TRY 

BEGIN CATCH 
    --You can choose to do anything in response to an error like nothing! 
END CATCH