Sql 自动更新数据库中的记录
让我在这里描述一下我的情况 我有一个有多条记录的表,其中的名称是相同的,因为它将是同一个人每天更新的记录 现在,我正试图找到最简单的方法来更新所有的名字Sql 自动更新数据库中的记录,sql,postgresql,Sql,Postgresql,让我在这里描述一下我的情况 我有一个有多条记录的表,其中的名称是相同的,因为它将是同一个人每天更新的记录 现在,我正试图找到最简单的方法来更新所有的名字 名称将被更新(TestName->RealName) 我希望此更改应用于具有相同名称的所有记录,在本例中为“TestName” 我可以做一个单一的查询,但我试图找到是否有一个自动的方法来正确地做这件事 我一直在尝试使用触发器,但在大多数情况下,我以一个无限循环结束,因为我试图更新表,触发器实际上绑定到该表,所以它调用另一个更新,等等 我不需要
我不需要精确的解决方案,请给我一些关于如何实现的线索。使用触发器中的函数可以简单地解决问题,例如:
create trigger before_update_on_my_table
before update on my_table
for each row
when (pg_trigger_depth() = 0) -- this prevents recursion
execute procedure before_update_on_my_table();
然而,这张桌子似乎设计得很糟糕。它不应该包含名称。创建一个具有名称的表(例如user\u name
),并在旧表中存储对新表的引用,例如:
create table user_name(id serial primary key, name text);
create table my_table(id serial primary key, user_id int references user_name(id));
您可以在postgresql中使用事件触发器不确定我是否正确地理解了您的问题,但这个简单的更新应该可以工作:
更新我的表集名称='RealName',其中name='TestName'
是的,我知道,但是有没有办法在SQL级别自动完成这一操作?e、 g触发器还是其他机制?问题还不清楚,我们不知道你所说的自动方式是什么意思。如果您想自动执行某些操作,则必须定义触发此更新的事件。如果您有导致无限循环的触发器,请向我们展示代码!我们不是读心术的人,你的书面描述也不清楚。