我有几张相互关联的表格。引擎: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中的任何函数来取消当前查询 这可能吗?
答案 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'