如何中止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