我有一个包含URL和代表其参数的字符串的表。问题是我希望url和parameterstring是表的唯一约束-aka没有条目可以具有相同的url AND
parameter
string。参数字符串可以是任意长度(长于800bytes左右,这是MySql键的最大长度,因此我不能使用Unique(url,params),因为它会引发错误…)。
我曾考虑过使用触发器来执行此操作,但是如果触发器发现插入内容将要插入重复的条目,该如何引发异常/引发错误?我想我想像MySql那样使用重复的主键抛出MySqlException,以便可以在我的C#代码中捕获它。
我有两个触发器需要获得帮助:…中止向C#抛出异常…如何向C#抛出异常等?…允许插入…-如果没有重复的条目,如何允许插入?
这是触发代码:
CREATE TRIGGER urls_check_duplicates
BEFORE INSERT ON urls
FOR EACH ROW
BEGIN
DECLARE num_rows INTEGER;
SELECT COUNT(*)
INTO num_rows
FROM urls
WHERE url = NEW.url AND params = NEW.params;
IF num_rows > 0 THEN
... ABORT/throw exception to C# ...
ELSE
... Allow insert ...
END