【问题标题】:check if value exist in another table before insert SQL在插入 SQL 之前检查值是否存在于另一个表中
【发布时间】:2022-12-20 05:01:52
【问题描述】:

我有表:“daysoff”和表:“rdv”

这RDV表看起来像这样:

temps_rdv etat_rdv ID_RDV
12-10-2022 reservee 2

这休息日表看起来像这样:

ID DATE_OFF REASON
2 12-06-2023 conge

我想在 rdv 表中插入值,但在插入任何东西之前我需要先检查 daysoff 表中是否不存在“temps_rdv”

示例:我无法使用 temps_rdv = 12-06-2023 添加 rdv

我尝试了触发器,但它似乎不起作用

CREATE OR REPLACE TRIGGER TRIGGER1 
BEFORE INSERT ON rdv
FOR EACH ROW
    BEGIN
        IF EXISTS (
            select daysoff.date_off
            From Available daysoff  -- CHANGED THE ALIAS TO A
            where (NEW.temps_rdv = daysoff.date_off)
        ) THEN 
           CALL:='Insert not allowed';

        END IF;
END;

【问题讨论】:

    标签: sql oracle plsql triggers cursor


    【解决方案1】:

    您可以创建一个临时表,将您的值插入临时表,然后使用休假表上的不存在条件从临时表中 poupolate rdv。

    CREATE GLOBAL TEMPORARY TABLE tmp_rdv_insert(
      temps_rdv date,
      etat_rdv varchar(255),
      ID_RDV int
     );
    
    INSERT INTO tmp_rdv_insert(temps_rdv, etat_rdv, ID_RDV)
    VALUES (TO_DATE('2023-06-12','YYYY-MM-DD'), 'test', 5);
    
    INSERT INTO rdv
    select * from tmp_rdv_insert tmp
    where not exists (select 1 from daysoff where DATE_OFF = tmp.temps_rdv);
    

    SQL Fiddle here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 1970-01-01
      相关资源
      最近更新 更多