使用一个触发器在多个表中插入数据
Insert data in multiple tables with one trigger
我是 SQL 和触发器的新手,所以我的问题可能很简单,但经过大量搜索后我不确定该怎么做。
所以,我和玩家有一个 table。创建播放器时,我想将新数据复制到 2 tables。一些字段进入产品,一些进入产品描述。
问题是我无法使用触发器在第二个 table(产品描述)中插入信息。我读到我不能对同一个操作使用多个触发器,所以我需要用一个来完成。
这是我到目前为止的代码:
BEGIN
INSERT INTO product (product_id, manufacturer_id)
SELECT player.id,player.team_id
FROM player WHERE NOT EXISTS (SELECT * FROM product
WHERE product.product_id = player.id);
INSERT INTO product_description (product_id, name, description)
SELECT player.id,CONCAT_WS(' ',player.first_name,player.last_name),player.about
FROM player WHERE NOT EXISTS (SELECT * FROM product
WHERE product.product_id = player.id);
END
任何帮助将不胜感激。
谢谢:)
我知道您想做类似级联插入的事情,所以我编写了这段有效的代码。与你的代码不同的是,你用的是END而我用的是COMMIT;
BEGIN;
INSERT INTO t1 (t) VALUES ("Test");
INSERT INTO t2 (id, t) (
SELECT id, CONCAT(t, id)
FROM t1
WHERE NOT EXISTS (
SELECT id
FROM t2
WHERE t1.id = t2.id
)
);
INSERT INTO t3 (id, t) (
SELECT id, CONCAT(t, id)
FROM t2
WHERE NOT EXISTS (
SELECT id
FROM t3
WHERE t2.id = t3.id
)
);
COMMIT;
三个表的结构相同:
- 编号:INT(11)
-t: VARCHAR
并且级联插入应该只插入不存在的记录。
感谢您的回复。你的代码帮助我注意到了我的错误,所以我修复了它,现在它可以工作了:)
这是正确的行:
FROM player WHERE NOT EXISTS (SELECT * FROM product_description WHERE product_description.product_id= player.id);
再次感谢。
我是 SQL 和触发器的新手,所以我的问题可能很简单,但经过大量搜索后我不确定该怎么做。
所以,我和玩家有一个 table。创建播放器时,我想将新数据复制到 2 tables。一些字段进入产品,一些进入产品描述。
问题是我无法使用触发器在第二个 table(产品描述)中插入信息。我读到我不能对同一个操作使用多个触发器,所以我需要用一个来完成。
这是我到目前为止的代码:
BEGIN
INSERT INTO product (product_id, manufacturer_id)
SELECT player.id,player.team_id
FROM player WHERE NOT EXISTS (SELECT * FROM product
WHERE product.product_id = player.id);
INSERT INTO product_description (product_id, name, description)
SELECT player.id,CONCAT_WS(' ',player.first_name,player.last_name),player.about
FROM player WHERE NOT EXISTS (SELECT * FROM product
WHERE product.product_id = player.id);
END
任何帮助将不胜感激。
谢谢:)
我知道您想做类似级联插入的事情,所以我编写了这段有效的代码。与你的代码不同的是,你用的是END而我用的是COMMIT;
BEGIN;
INSERT INTO t1 (t) VALUES ("Test");
INSERT INTO t2 (id, t) (
SELECT id, CONCAT(t, id)
FROM t1
WHERE NOT EXISTS (
SELECT id
FROM t2
WHERE t1.id = t2.id
)
);
INSERT INTO t3 (id, t) (
SELECT id, CONCAT(t, id)
FROM t2
WHERE NOT EXISTS (
SELECT id
FROM t3
WHERE t2.id = t3.id
)
);
COMMIT;
三个表的结构相同: - 编号:INT(11) -t: VARCHAR
并且级联插入应该只插入不存在的记录。
感谢您的回复。你的代码帮助我注意到了我的错误,所以我修复了它,现在它可以工作了:) 这是正确的行:
FROM player WHERE NOT EXISTS (SELECT * FROM product_description WHERE product_description.product_id= player.id);
再次感谢。