有没有办法检查行是否已经存在并且是否处于活动状态?
让行看起来像那样:
ID: 123456
Active : 1
我知道我可以做那样的事情:
SELECT * FROM TableName WHERE id=123456 AND Active=1;
但那不是我想要的。
如果我尝试使用相同的信息再次将查询插入表中,则不应重复。
但是如果约束不活动(0),则约束应该有效。
我不想明智地执行验证码。我希望数据库服务器进行验证。
谢谢!
答案 0 :(得分:0)
当且仅当已存在活动行时,您可以在插入之前使用触发器来阻止插入。
create trigger tr_bi_TableName
before insert on TableName
for each row
begin
if((select count(*) from TableName where id = new.id and active = 1) > 0) then
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'There is already an active row for this id.';
end if
end
SQLState 45000表示未处理的用户定义的异常。
有关信号的更多信息,请参阅documentaton。