首页 > 解决方案 > 更新批量插入的外键

问题描述

Abooking有很多appointments

我正在进行数据库迁移,以便为所有现有约会创建预订而无需预订。到目前为止我有这个:

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

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

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

使用 Postgres

标签: sqlpostgresqldatabase-migration

解决方案


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

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 

推荐阅读