我有一个表包含一个url和一个表示其参数的字符串。问题是我想要一个url和parameterstring作为表的唯一约束 – 也就是说没有条目可以有相同的url和参数字符串。参数字符串可以是任意长度(长于800bytes左右,这是MySql键的最大长度,所以我不能使用Unique(url,params),因为它抛出一个错误…)。
我想过使用触发器来做到这一点,但是如果触发器发现插入是要插入一个重复的条目,如何抛出异常/提出错误?我想我想有一个MySqlException抛出像MySql重复的主键等,所以我可以抓住它在我的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