SQL: вставить значение во внешний ключ - PullRequest
0 голосов
/ 01 сентября 2010

Я использую phpmyadmin для веб-сайта, который я создаю, и у меня есть вопрос о вставке значений во внешний ключ.

Я могу выбрать идентификатор таблицы изображений, когда для столбца события в таблице событий задано значение x i.e ...

$event = "Partay";

$sql = "SELECT i.ImageID
FROM images i 
INNER JOIN events e 
ON i.eventID = e.eventID
WHERE e.event ='".$event."'";

Это работает для выбора изображений для отображения. Однако, когда я хочу вставить и изображение, внутреннее соединение, похоже, не работает одинаково.

$sql = "INSERT INTO images i (i.image, e.event) 
INNER JOIN event e 
ON i.eventID = e.eventID
VALUES ('".$content."','".$event."')";

-Я пытаюсь вставить изображение в таблицу изображений и новое событие в таблицу событий, чтобы это новое изображение принадлежало этому новому событию. -Так как будет работать вставка при вставке изображения с существующим событием?

Любая помощь будет хорошей, спасибо.

Ответы [ 3 ]

2 голосов
/ 01 сентября 2010

Сначала вы должны ВСТАВИТЬ событие, если ОК, затем ВСТАВИТЬ изображение, если оно есть.Не знаю, как вы хотите это сделать, но я думаю, что вы должны проверить, есть ли вставка или обновление, которое вы хотите.

В обеих ситуациях вы должны использовать транзакцию, чтобы убедиться, что вы вставляете все этохочешь ты или нет вообще.(Событие и изображение в данном случае).

Прочтите что-нибудь об уровне транзакций и уровне изоляции, чтобы лучше это понять.

1 голос
/ 01 сентября 2010

Неверный синтаксис SQL.Нет никакого способа сделать это в одной инструкции в SQL.

Вставить в событие, а затем вставить в изображения.Используйте транзакцию, как сказал swarFish, если вы хотите обеспечить атомарность (убедитесь, что оба успешно, или регистр не вставлен).

1 голос
/ 01 сентября 2010

Используйте два отдельных оператора вставки, заключенных в транзакцию.

Чтобы вставить изображение для уже существующего события, просто используйте оператор вставки для изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...