2013-04-26 2 views
0

У меня есть таблица под названиемMySQL копия из одного столбца таблицы в другую пустую таблицу с Intergrity контрсил

 Seats 
ID Number Region_ID Venue_ID 


    seatreservation 
ID Flag seat_ID reservation_ID 

Теперь таблица seatreservation пуста, но имеет reservation_ID в качестве внешнего ключа в другую таблицу. Поэтому я пытаюсь скопировать содержимое из Seats.ID и поместить его в seatreservation.seat_ID, где, например, Region_ID = 2. Если я использовать оператор вставки как:

INSERT INTO seatreservation (seat_ID) SELECT ID FROM seat WHERE venue_ID = 2;

Это не будет работать, потому что reservation_ID на seatreservation не может быть пустым (ссылочной целостности). Есть ли способ заполнить стол seat_ID из Seats.ID, а также вставить, например, «1» для всех идентификаторов резервирования в цикле, чтобы избежать null? Мне нужна помощь в распространении заявления sql или другого подхода.

ответ

4
INSERT INTO seatreservation (seat_ID, reservation_ID) 
SELECT ID, 1 FROM seat WHERE venue_ID = 2; 
+0

Вы мистер Шибормот - спасатель жизни! Спасибо. – Undisputed007

+0

Так, например, если я хочу добавить дополнительное поле и ввести: Доступно как значение, я могу сделать что-то вроде этого? INSERT INTO seatreservation (seat_ID, reservation_ID, Flag) SELECT ID, 1 'Доступен' С места WHERE Место_ID = 2; Но его не работает. Пожалуйста, объясните свой запрос мне и как синтаксический анализатор может интерпретировать это значение 1 для резервирования, но не может интерпретировать доступную строку для флага. – Undisputed007

+0

@FrankSMallville, каков тип вашего столбца 'Flag'? И что такое сообщение об ошибке? – shibormot

Смежные вопросы