sql - 更新批量插入的外键
问题描述
Abooking
有很多appointments
。
我正在进行数据库迁移,以便为所有现有约会创建预订而无需预订。到目前为止我有这个:
INSERT INTO bookings (status)
SELECT (status)
FROM appointments
WHERE appointments.booking_id IS NULL
但我对如何更新appointments.booking_id
新创建的预订感到困惑。
我不希望对每个约会都进行新的查询,因为现有的约会很多,而绩效是一个因素。(通常我依赖 ORM,因此这个基本的 SQL 问题)
使用 Postgres
解决方案
创建一个触发器,该触发器将在插入预订表中的值后将值插入表中。
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
推荐阅读
- azure - 架构所有者无法创建表
- sql - 使用 CASE 表达式时如何解决此查询中的错误?
- delphi - Delphi 10.3(32 位)社区版访问 PostgreSQL 11,使用 FireDac 驱动程序的 64 位版
- android - 运行我的 Flutter 项目时,我的 Flutter 项目中出现 AndroidX 不兼容问题
- react-native - 与 Expo 项目在 React 中广播
- python - 如何使用 python 2.7 完成基本身份验证?
- php - Yii2,为什么当该属性由行为分配时,由于缺少强制属性而导致模型验证失败?
- c# - 实体框架在加载时抛出异常
- javascript - 如何通过 Gmail API 和 Google Apps 脚本请求和发送付款
- java - 从 Spring Boot 开始持续使用 REST Web 服务