Postgres でこのステートメントを実行してみました:
insert into field (id, name) values (DEFAULT, 'Me')
そして、私はこのエラーを受け取りました:
ERROR: null value in column "id" violates not-null constraint
IDを手動で設定する必要がありました。それに関する問題は、アプリがレコードを挿入すると、重複キー エラーが発生することです。Play フレームワークと ebean ORM を使用して Java アプリを構築しています。したがって、スキーマ全体が ebean によって自動的に生成されます。この場合、データベースにレコードを手動で挿入するためのベスト プラクティスは何ですか?
編集:
これが私のフィールドクラスの作成方法です
@Entity
public class Field {
@id
public Long id;
public String name;
}
編集:
field_seq シーケンスを確認したところ、次のようになります。
CREATE SEQUENCE public.field_seq INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 CACHE 1;
編集:
pgAdmin III で生成された SQL は次のとおりです。
CREATE TABLE field
(
id bigint NOT NULL,
created timestamp without time zone,
modified timestamp without time zone,
name character varying(255),
enabled boolean,
auto_set boolean,
section character varying(17),
input_type character varying(8),
user_id bigint,
CONSTRAINT pk_field PRIMARY KEY (id),
CONSTRAINT fk_field_user_3 FOREIGN KEY (user_id)
REFERENCES account (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT ck_field_input_type CHECK (input_type::text = ANY (ARRAY['TEXT'::character varying, 'TEXTAREA'::character varying]::text[])),
CONSTRAINT ck_field_section CHECK (section::text = ANY (ARRAY['MAIN_CONTACT_INFO'::character varying, 'PARTICIPANT_INFO'::character varying]::text[]))
);
CREATE INDEX ix_field_user_3
ON field
USING btree
(user_id);