如何使用触发器将新记录存储到其他 table 而无需重复

how to store new record to other table without duplicate using trigger

我想将数据记录从 table dvc0004 复制到 table dvc0005,而不使用触发器复制数据。
这是我的触发器:

CREATE 
    DEFINER = ''@''
TRIGGER testing_MesinAbsen.trigger1
    AFTER INSERT
    ON testing_MesinAbsen.dvc0004
    FOR EACH ROW
BEGIN
    IF (NOT EXISTS(SELECT * FROM dvc0005 d WHERE d.NIK = NEW.NIK AND d.Enroll=NEW.Enroll)) THEN
    INSERT INTO dvc0005 (NIK,Enroll) 
    VALUES (NEW.NIK,NEW.Enroll); 
    END IF;
END

我尝试插入一条新记录,所以出现如下提示:

这是我的 table:
关于 dvc0004

NIK Enroll
1 2021-03-01 00:00:00
2 2021-03-01 00:01:00
3 2021-03-01 00:03:00
4 2021-03-01 00:04:00


在 dvc0005

NIK Enroll
1 2021-03-01 00:00:00
3 2021-03-01 00:03:00
4 2021-03-01 00:04:00


这是我想要的结果:
在 dvc0005 上:

NIK Enroll
1 2021-03-01 00:00:00
2 2021-03-01 00:01:00
3 2021-03-01 00:03:00
4 2021-03-01 00:04:00


从期望的结果来看table,数据记录NIK : 2成功插入dvc0005,没有重复数据插入

一切正常。请检查。

创建 table dvc0005 并插入行:

 create table dvc0005 (NIK int, Enroll datetime);


 insert into dvc0005 values(1,  '2021-03-01 00:00:00');
 insert into dvc0005 values(3,  '2021-03-01 00:03:00');
 insert into dvc0005 values(4,  '2021-03-01 00:04:00');

创建tabledvc0004

 create table dvc0004(NIK int, Enroll datetime);

创建触发器:

 CREATE 
 TRIGGER trigger1
     AFTER INSERT
     ON dvc0004
     FOR EACH ROW
 BEGIN
     IF (NOT EXISTS(SELECT * FROM dvc0005 d WHERE d.NIK = NEW.NIK AND d.Enroll=NEW.Enroll)) THEN
     INSERT INTO dvc0005 (NIK,Enroll) 
     VALUES (NEW.NIK,NEW.Enroll); 
     END IF;
 END

插入到dvc0004

 insert into dvc0004 values(1,  '2021-03-01 00:00:00');
 insert into dvc0004 values(2,  '2021-03-01 00:01:00');
 insert into dvc0004 values(3,  '2021-03-01 00:03:00');
 insert into dvc0004 values(4,  '2021-03-01 00:04:00');




 select * from dvc0005;

输出:

NIK Enroll
1 2021-03-01 00:00:00
3 2021-03-01 00:03:00
4 2021-03-01 00:04:00
2 2021-03-01 00:01:00
 select * from dvc0005;

输出:

NIK Enroll
1 2021-03-01 00:00:00
3 2021-03-01 00:03:00
4 2021-03-01 00:04:00
2 2021-03-01 00:01:00

dbhere

这个触发器可以运行在mariaDB

上执行
CREATE 
    DEFINER = ''@''
TRIGGER testing_MesinAbsen.trigger1
    AFTER INSERT
    ON testing_MesinAbsen.dvc0004
    FOR EACH ROW
BEGIN
    IF (NOT EXISTS(SELECT * FROM dvc0005 d WHERE d.NIK = NEW.NIK AND d.Enroll=NEW.Enroll)) THEN
    INSERT INTO dvc0005 (NIK,Enroll) 
    VALUES (NEW.NIK,NEW.Enroll); 
    END IF;
END