如果引用表中的值为null或零,则取消INSERT

时间:2011-10-09 06:03:56

标签: mysql sql

我有几张相互关联的表格。引擎:myisam

1:

account
account_ID, account_username, account_pwd, ......

2:

items
items_account_ID, items_name, ......

如您所见,项目有一列items_account_ID。每个项目都属于一个 帐户。要插入项目,我使用如下查询:

INSERT INTO items SET items_name = 'asd', items_account_ID = (SELECT account_ID FROM account WHERE account_ID = accountValue AND account_pwd='something');

此查询在asp.net中创建,而accountValue来自SESSION或隐藏字段。 SELECT语句是出于安全原因,因此用户无法为彼此创建项目。

如果account_ID不存在,我想取消INSERT。类似的东西:

....“items_account_ID = IFNULL(theSelectStatement,”cancelQuery()“);

但我找不到mysql中的任何函数来取消当前查询 这可能吗?

1 个答案:

答案 0 :(得分:3)

首先,您应该将items_account_ID定义为not null并确保它将account(account_ID)作为外键引用。这样做会阻止您将错误的account_ID插入items

然后您可以考虑重写您的插入内容,如下所示:

insert items 
(
     items_name
    ,items_account_ID
)
select
'asd'
,account_ID
from account 
where account_ID = accountValue 
and account_pwd = 'something'