ここでの短いバージョンは、修飾されていないlastval
を使用するものです。 悪い考えです。トリガーやルールなどが問題を引き起こす可能性があります。
lastval
は避けてください 全体的に。使用:
BEGIN;
INSERT INTO "users" ("email", "first_name", "last_name", "password", "objectstate_id", "activate_rid")
VALUES ('[email protected]', 'Xpress', 'Care', 'f9fecdd84ee071806423adf30d6d6ff04e1a0a2c6688f2c057ddbab1d6b55d02', 4, 'EMQHTMMvViAB5BdYj0E6')
RETURNING id;
ここで、id
生成されたキー列の名前である必要があります。
このアプローチは、複数値の挿入とINSERT INTO ... SELECT ...
を処理します。 正しく、トリガーがシーケンスに触れる問題は発生しません。
関数呼び出しベースのアプローチを使用する必要がある場合は、少なくともcurrval('tablename_id_seq')
を使用してください。 (適切なシーケンス名を渡す)lastval
の代わりに 。