1

フォームから 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-datamodifying を使用しているか、少なくとも使用しようとしていますが、送信時にエラーが発生し続けます。

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

誰でもアイデアはありますか?

4

2 に答える 2

1

の列タイプをinstitutions.i_idstaff.u_id設定して、実際にテーブルを作成しましたserialか? または、シーケンスを手動で作成しますか?

前者の場合は、nextvalとにかく明示的に使用する必要はありません。後者の場合は、シーケンス名を再確認してください。

于 2012-09-04T11:01:40.250 に答える
0

これは理想的にはコメントですが、何か関係があるのではないかと思います:

$'password''$password'その例の4行目にあるはずです。

于 2012-09-04T10:58:52.967 に答える