обновить внешние ключи при массовой вставке - PullRequest
0 голосов
/ 08 ноября 2018

A booking имеет много appointments.

Я работаю над миграцией базы данных, чтобы создать бронирование для всех существующих встреч без бронирования. У меня есть это до сих пор:

INSERT INTO bookings (status)
SELECT (status)
FROM appointments
WHERE appointments.booking_id IS NULL

Но я озадачен тем, как обновить appointments.booking_id недавно созданными заказами.

Я бы предпочел не делать новый запрос для каждой встречи, так как есть много существующих встреч, и производительность является фактором. (Обычно я полагаюсь на ORM, поэтому этот базовый вопрос SQL)

Использование Postgres

1 Ответ

0 голосов
/ 08 ноября 2018

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

CREATE TRIGGER trigger_name 
ON table_name 
FOR INSERT 
AS 
  BEGIN 
      SET nocount ON 

      IF EXISTS (SELECT ( status ) 
                 FROM   appointments 
                 WHERE  appointments.booking_id IS NULL) 
        BEGIN 
            INSERT INTO table_name 
                        (column_name) 
            SELECT 'xxx' -- Replace this value with what you wanna insert  
            FROM   appointments 
            WHERE  appointments.booking_id IS NULL 
        END 
  END 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...