oracle - Oracle 数据库 - 根据在另一张表中的插入触发在一张表中随机更新和分配
问题描述
我有 3 个数据库表:
BOOKING
CREATE TABLE BOOKING
(BOOKING_ID NUMBER,DETAILS VARCHAAR2(1000),
CONSTRAINT BOOKING_PK PRIMARY KEY ("BOOKING_ID"));
ALLOCATION
CREATE TABLE ALLOCATION
(ALLOCATION_ID NUMBER, BOOKING_ID NUMBER, STAFF_ID NUMBER,
CONSTRAINT ALLOCATION_PK PRIMARY KEY ("ALLOCATION_ID"));
STAFF
CREATE TABLE STAFF
(STAFF_ID NUMBER,STAFF_TYPE VARCHAR2(20),
CONSTRAINT STAFF_PK PRIMARY KEY("STAFF_ID"));
因此,每当 BOOKING 表中有一个带有新 Booking_ID 的新条目时,在 ALLOCATION 表中,该预订 id 将被随机分配一个助理(而非经理)的员工。一名员工也可以分配多个预订。
因此,如果有一个 Booking ID 20。在 ALLOCATION 表中:Allocation_id 1(通过序列生成),Booking_id = 20,Staff_id(任何作为助理的员工的Staff_id)
我需要根据上述要求创建一个触发器。
甲骨文 19c
解决方案
您可以尝试以下触发器 -
CREATE OR REPLACE TRIGGER TRIG_INSERT_BOOKING
AFTER INSERT ON BOOKING
FOR EACH ROW
BEGIN
INSERT INTO ALLOCATION(ALLOCATION_ID, BOOKING_ID, STAFF_ID)
VALUES(YOUR_SEQUENCE.NEXTVAL,
:NEW.BOOKING_ID,
(SELECT STAFF_ID
FROM STAFF
WHERE STAFF_TYPE = 'Assistant'
ORDER BY DBMS_RANDOM.RANDOM
FETCH FIRST ROW ONLY));
END;
/
推荐阅读
- python - Selenium Automate 单击“我们重视您的隐私”弹出窗口
- kubernetes - Kubernetes - 达到 pod 限制时,AutoScaling 不会增加节点数
- wpf - 当弹出窗口打开时,WPF如何防止与后台控件交互
- ios - 如何制作 swift listView 轮盘动画
- python - 如何检查另一个数据框中是否不存在字符串值?
- tensorflow - 使用 TensorFlow 数据集 from_generator() 使用自定义生成器和 ImageDataGenerator 创建多输入/输出
- flutter - 在 null 上调用了方法“子字符串”。接收方:null 尝试调用:substring(0, 1)
- json - 基于 pandas 列创建具有 json 格式的列
- php - 如何使用 htacces 文件隐藏 php 中的完整路径
- node.js - 如何减慢/瓶颈`fs.createReadStream`数据事件以进行调试