如何中止MySQL觸發(fā)器中的INSERT操作?我有一個表,其中包含一個url和一個表示其參數(shù)的字符串。問題是,我想要一個url和一個參數(shù)字符串作為表的唯一約束-也就是沒有任何條目可以具有相同的url和參數(shù)字符串。參數(shù)字符串可以是任意長度(大于800字節(jié)左右,這是MySQL鍵的最大長度,因此我不能使用唯一的(url,params),因為它會拋出一個錯誤.)。我曾考慮過使用觸發(fā)器來執(zhí)行此操作,但是如果觸發(fā)器發(fā)現(xiàn)INSERT即將插入重復的條目,如何拋出異常/引發(fā)錯誤?我想我希望像MySQL一樣拋出一個MySqlException,使用重復的主鍵等等,這樣我就可以在C#代碼中捕獲它。我有兩塊扳機,我需要得到幫助:.中止拋出異常到C#.。如何將異常等拋給C#?允許插入.-如果沒有重復條目,我如何允許插入?下面是觸發(fā)代碼: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
如何中止MySQL觸發(fā)器中的INSERT操作?
郎朗坤
2019-07-15 19:43:35