相关疑难解决方法(0)

如何在MySql触发器中中止INSERT操作?

我有一个包含url的表和一个表示其参数的字符串.问题是我想要一个url和一个参数字符串作为表的唯一约束 - 也就是说没有条目可以具有相同的url和参数字符串.参数字符串可以是任意长度(比800bytes长左右这是一个MySQL的关键最大长度,所以因为它抛出一个错误,我不能用独有的(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
Run Code Online (Sandbox Code Playgroud)

mysql triggers duplicates

31
推荐指数
3
解决办法
4万
查看次数

使用触发器停止插入或更新

由于MySQL忽略了检查约束,如何使用触发器来阻止插入或更新发生?

例如:

表foo有一个名为agency的属性,agency属性只能是1,2,3,4或5.

delimiter $$
create trigger agency_check
before insert on foo
for each row
begin
if (new.agency < 1 or new.agency > 5) then

#Do nothing?

end if;
end
$$
delimiter ;
Run Code Online (Sandbox Code Playgroud)

或者有没有更好的方法来在MySQL中进行检查约束?

mysql triggers

16
推荐指数
2
解决办法
3万
查看次数

如何确保数据库表中只有一行?

我想确保名为"myTable"的MySQL表只有一行.

所以我需要能够在这一行上做更新,但显然插入和删除应该是不可能的.

我问这个问题是因为Stack Overflow的回答

谢谢!

mysql database privileges database-design

6
推荐指数
3
解决办法
1万
查看次数

MySQL触发器 - 更新后删除

对于一个项目中的测试用例,如果字段之一满足条件之一,我必须删除记录。最简单的似乎是简单的触发器:

delimiter $$
drop trigger w_leb_go $$

create trigger w_leb_go after update on test
for each row
begin
set @stat=NEW.res;
set @id=NEW.id;
IF @stat=3 THEN
  delete from test where id=@id;
END IF;
end$$

delimiter ;
Run Code Online (Sandbox Code Playgroud)

但正如我怀疑有错误:

更新测试集 res=3,其中 id=1;
错误 1442 (HY000):无法更新存储函数/触发器中的表“test”,因为它已被调用此存储函数/触发器的语句使用。

仅通过访问数据库还可以如何完成?我的意思是我不应该更改经过测试的应用程序。

mysql sql triggers sql-update sql-delete

6
推荐指数
1
解决办法
1万
查看次数

在mysql中创建表约束

我有一个表格,其中我有一些列a,b,c,每列有另一列,比如说,(x,y,z)它们a,b,c分别依赖.

x,y,z1如果a,b,c有任何值将具有值,如果包含null将包含null a,b,c has null.

举个例子,让我们说,存储的值a2x依赖于它的列.所以x会有价值1.

如果存储的值a是,nullx值为null.

那么有没有一种方法可以在创建表时声明这个约束.

除了触发器之外,请提出建议.

php mysql sql constraints

6
推荐指数
1
解决办法
1196
查看次数

MySQL `BEFORE INSERT TRIGGER` 如何在条件下跳过数据插入?

可能的重复:
MySQL 触发器在某些条件下阻止 INSERT

在MySQL中,BEFORE INSERT TRIGGER如何在条件下跳过数据插入?

delimiter //
drop trigger if exists test_trigger //
create trigger test_trigger before insert on t
for each row
begin
  set @found := false;

  #Some code

  if @found then
    #How to skip the data insertion under condition?
  end if;
end   //

delimiter ;
Run Code Online (Sandbox Code Playgroud)

mysql database triggers

4
推荐指数
1
解决办法
2488
查看次数