在对一个表进行INSERT时 在连接的表中INSERT数据[英] On INSERT to a table INSERT data in connected tables

问题描述

我有两个表格的列,共有一个名为id_user的列.这两个表是在我的Drupal网页中创建的(我不知道,因为我没有创建NetBeans项目).

我在Internet上检查了一下,发现可能是通过将REFERENCES 1sttable (id_user)添加到第二个表中,它应该复制1sttable的值(在新用户到达时始终创建的值) 2ndtable(我不知道在哪个时候创建​​).正确吗?

如果不正确,我想知道PGADMIN中的一种方法可以使我同步这些表,或者至少在同一时刻创建两个表.

我遇到的问题是,新用户在注册后立即在1sttable上有一个新行,而要在2ndtable上获得新行,它需要某种"激活",例如插入所有的行数据.我正在寻找的是一种方法,即1sttable中有一个新行,它也会在另一个表上自动创建新行.我不知道该如何更清楚(英语不是我的母语).

您给我的解决方案似乎很清楚,但是问题要大一点:两张表呈现不同的变量,应该是,它们在MySQL中,使用用户数据(Drupal默认值)对于用户),然后我在postgresql中有2个,都带有相同的主键(id_user):

  • 第一列有118列,其中大多数是真正的整数;
  • 第二列有50列,具有混合类型.

我正在使用的Web应用程序都需要此列,所有值都不为空的值(否则我会得到NullPoInterException)工作,因此我要搜索的是(我认为):

当用户注册 - 在Drupal中插入他的电子邮件时,它会自动创建两个满足的列,以使网络在电子邮件存储在MySQL中后立即自动工作.可能吗?它解释了吗?

我的环境是:

  • Windows Server 2008 Enterprise Edition
  • 玻璃鱼2.1
  • NetBeans 6.7.1
  • Drupal 6.17
  • Postgresql 8.4
  • mysql 5.1.48

推荐答案

pgadmin 只是GUI.您的意思是 postgresql rdbms .

a 外国密钥约束,,就像您只有强制执行,可以使用不使用值,而在引用列中不存在.您可以使用ON UPDATE CASCADE或ON DELETE CASCADE从引用列传播更改,但是您不能像描述的那样创建 new Rows .您有错误的工具.

您所描述的可以通过 trigger .另一种更复杂的方法是 RULE .在这里触发.

在PostgreSQL中,您需要 trigger ">触发功能 a href =" https://www.postgresql.org/docs/current/current/plpgsql.html" rel =" nofollow noreferrer"> plpgsql 和a 触发在使用它的表上.

类似:

CREATE OR REPLACE FUNCTION trg_insert_row_in_tbl2()
  RETURNS trigger AS
$func$
BEGIN
   INSERT INTO tbl2 (my_id, col1)
   VALUES (NEW.my_id, NEW.col1)     -- more columns?

   RETURN NEW;  -- doesn't matter much for AFTER trigger
END
$func$  LANGUAGE plpgsql;

和触发AFTER INSERT tbl1:

CREATE TRIGGER insaft
AFTER INSERT ON tbl1
FOR EACH ROW EXECUTE PROCEDURE trg_insert_row_in_tbl2();

其他推荐答案

您可能需要阅读有关使用> Drupal Hooks 在注册用户时添加要运行的额外代码.一旦知道如何使用钩子,就可以编写代码(在模块中)以在第二个表中插入相应的记录.这里要使用的好候选钩子是.

您阅读的引用是SQL命令的一部分第二个表格到第一张.这不是严格的解决问题的必要条件,但是可以帮助您保持数据库一致.我建议您在数据库结构和约束上阅读有关此主题的更多信息.

本文地址:https://www.itbaoku.cn/post/1739739.html