更新批量插入的外键

时间:2018-11-08 18:53:41

标签: sql postgresql database-migration

一个booking有很多appointments

我正在进行数据库迁移,以为所有现有约会创建未预订的预订。到目前为止,我已经知道了:

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

但是我对如何使用新创建的预订更新appointments.booking_id感到困惑。

我不希望对每个约会都进行新的查询,因为现有约会很多,而性能是一个因素。 (通常我依靠ORM,因此是基本的SQL问题)

使用Postgres

1 个答案:

答案 0 :(得分:0)

创建一个触发器,该触发器将在预订表中插入值之后将值插入到表中。

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