mysql 触发器下插入操作_如何中止MySQL触发器中的插入操作?

我有一个表,其中包含一个URL和一个表示其参数的字符串。问题是我想要一个URL和一个参数字符串作为表的唯一约束——也就是说,任何条目都不能有相同的URL和参数字符串。参数字符串可以是任意长度(长度超过800字节左右,这是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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值