Отмените INSERT, если значение в ссылочной таблице равно нулю или нулю - PullRequest
1 голос
/ 09 октября 2011

У меня есть пара таблиц, которые связаны друг с другом.двигатель: 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 предназначена для обеспечения безопасности, чтобы пользователи не могли создавать элементы друг для друга.

Я бы хотел отменить INSERT, если account_ID не существует.Примерно так:

.... "items_account_ID = IFNULL (theSelectStatement," cancelQuery () ");

Но я не могу найти ни одной функции в mysql для отмены текущего запроса.
Возможно ли это?

1 Ответ

3 голосов
/ 09 октября 2011

Прежде всего, вы должны определить 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...