您好我有一个简单的问题。假设我有一个用户表,其中包含userId和username等列,然后我有一个表" notification"在那里我有像userId和用户名等列。
所以我的问题是 - 我能以某种方式将userId值插入到通知中,并且将根据users表中的userId自动插入用户名值。因为我不想在插入通知之前以某种方式访问用户表我觉得它无用的浪费。这样的事情可能与MySQL有关吗?
答案 0 :(得分:2)
此触发器自动在通知表中插入数据。只要在用户表中插入新行,就会触发该数据。
delimiter #
create trigger insert_name after insert on user
for each row
begin
insert into notifications (id, user_name) values (select id,user_name from user);
end#
注意:
如果您想在数据库中自动执行删除或插入任务,触发器是处理情况的最佳方式。人们不使用它的原因是因为它很难实现大量的表格也很慢,每次更改表格架构时都需要更新它。
答案 1 :(得分:1)
如果您可以撰写具有正确结果的SELECT
查询,则可以将其链接到INSERT
:
INSERT INTO notifications (user_id, user_name)
SELECT id, name FROM users
基本上INSERT INTO
语句允许插入数据来自任意SELECT
。只要列匹配,它应该可以正常工作。
如果您要更新具有用户ID但没有名称的表:
UPDATE notifications, users
SET notifications.user_name=users.name
WHERE notifications.user_id=users.id
如果您要自动执行此操作,则需要创建TRIGGER
。
通常情况下,这种denormalization是在您拥有撰写通知所需的所有数据并且仍然拥有加载用户数据时完成的。