在插入SQL之前检查值是否存在于另一个表中



我有表格:"daysoff";和表:"rdv">

rdv表如下所示:

ID_RDV

您可以创建一个临时表,将您的值插入到临时表中,然后在dayoff表上使用不存在的条件填充临时表中的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

使用MERGE。然后处理WHEN NOT MATCHED来插入或更新。触发是一种糟糕的处理方式。最糟糕的情况是你的扳机突变了然后一切都爆炸了。如果你不想依赖SQL,你可以使用PL/SQL。如果所有这些都失败了,您可以使用一个临时表(例如当前会话的临时表)来检查您需要(或不需要)的值。根据你想要实现的目标,我建议你先看看MERGE。这可能正是你所需要的。

相关内容

最新更新