亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何中止MySQL觸發器中的INSERT操作?

如何中止MySQL觸發器中的INSERT操作?

郎朗坤 2019-07-15 19:43:35
如何中止MySQL觸發器中的INSERT操作?我有一個表,其中包含一個url和一個表示其參數的字符串。問題是,我想要一個url和一個參數字符串作為表的唯一約束-也就是沒有任何條目可以具有相同的url和參數字符串。參數字符串可以是任意長度(大于800字節左右,這是MySQL鍵的最大長度,因此我不能使用唯一的(url,params),因為它會拋出一個錯誤.)。我曾考慮過使用觸發器來執行此操作,但是如果觸發器發現INSERT即將插入重復的條目,如何拋出異常/引發錯誤?我想我希望像MySQL一樣拋出一個MySqlException,使用重復的主鍵等等,這樣我就可以在C#代碼中捕獲它。我有兩塊扳機,我需要得到幫助:.中止拋出異常到C#.。如何將異常等拋給C#?允許插入.-如果沒有重復條目,我如何允許插入?下面是觸發代碼:CREATE TRIGGER urls_check_duplicates BEFORE INSERT ON urlsFOR EACH ROWBEGINDECLARE num_rows INTEGER;SELECT COUNT(*)INTO num_rowsFROM urlsWHERE  url = NEW.url AND params = NEW.params;IF num_rows > 0 THEN    ... ABORT/throw exception to C# ...ELSE    ... Allow insert ...END
查看完整描述

3 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

這個MySQL文檔中有關觸發器的注釋建議MySQL中沒有這樣的特性。最好的方法就是為觸發錯誤創建一個單獨的表,就像在同一頁上建議的那樣.


查看完整回答
反對 回復 2019-07-15
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

如果表定義為NOTNULL值,則可以將NEW設置為NULL,這實際上不會執行INSERT。您可能必須打開嚴格的SQL模式才能正常工作。


查看完整回答
反對 回復 2019-07-15
  • 3 回答
  • 0 關注
  • 1737 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號