如何在PostgreSQL中插入主/外键行

时间:2015-04-28 22:17:01

标签: postgresql insert foreign-keys primary-key

我正在PostgreSQL中为一个报纸在线填充数据库。现在我的疑问在于如何将值插入到只有属性既是主键又是外键的表中。

在此上下文中,管理员是第一个注册帐户的人。所以idAdmin = idA = 1:

CREATE TABLE AUTENTICADO (
    idA serial NOT NULL ,
    login VARCHAR(45) NOT NULL,
    password VARCHAR(45) NOT NULL,
    email VARCHAR(40) NOT NULL,
    PRIMARY KEY (idA) );

CREATE TABLE ADMIN (
    idAdmin INT  NOT NULL REFERENCES AUTENTICADO (idA),
    PRIMARY KEY (idAdmin) );

我在下面尝试将值插入'ADMIN'是合乎逻辑的,尽管考虑'idAdmin'是主键(和外键)显然不可能。

INSERT INTO AUTENTICADO VALUES ('john','adadfsfsdfs', 'john@random.com')
INSERT INTO ADMIN VALUES (1)

有没有办法注册创建帐户的第一个用户(idA = 1)是admin(idAdmin = idA = 1)?

1 个答案:

答案 0 :(得分:1)

  

虽然显然不可能考虑'idAdmin'是一个   主键(和外键)。

那又怎样?

如果您修复了第一个查询以列出列并使用returning子句获取SERIAL ID的自动生成值,那么它就可以正常工作:

INSERT INTO AUTENTICADO(login,password,email)
  VALUES ('john','adadfsfsdfs', 'john@random.com')
  returning idA;

结果:

 ida 
-----
   1
(1 row)

第二次查询:

insert into admin values(1);
select * from admin;

结果:

 idadmin 
---------
       1