我在将表格中的数据写入PostgreSQL数据库中的多个数据表时遇到了问题。
这是我的数据模型
CREATE TABLE institutions(i_id PK, name text, memberofstaff REFERENCES staff u_id);
CREATE TABLE staff(u_id PK, username text, password text, institution REFERENCES institutions i_id);
所以它是1:1的关系。这些表已经设置好了。这是我遇到困难的PHP脚本。我正在使用CTE数据修改或至少尝试但我在提交时一直收到错误。
PHP:
$conn = pg_connect('database information filled out in code');
$result = pg_query("WITH x AS (
INSERT INTO staff(username, password, institution)
VALUES('$username', '$password', nextval('institutions_i_id_seq'))
RETURNING u_id, i_id)
INSERT INTO institutions (i_id, name, memberofstaff)
SELECT x.i_id, x.u_id, '$institution'
FROM x");
pg_close($conn);
这就是我得到的代码和错误:
Warning: pg_query() [function.pg-query]: Query failed: ERROR: relation "institutions_i_id_seq" does not exist LINE 3: VALUES('AberLibrary01', '', nextval('institutions_i_id_se... ^ in DIRECTORY LISTING(I replaced this) on line 22
有人有任何想法吗?
答案 0 :(得分:1)
您是否实际创建了表格institutions.i_id
和staff.u_id
设置为serial
的表格?或者手动创建序列?
如果是前者,无论如何都不需要明确使用nextval
。如果是后者,请仔细检查序列名称。
答案 1 :(得分:0)
理想情况下这应该是评论,但我认为可能与之相关:
$'password'
在该示例的第四行应为'$password'
。