2009-06-28 6 views
0
CREATE TABLE u_account (
Jid serial primary key, 
score int4 
); 

プライマリキーはこのように更新すると正常に動作します(それ自体を更新します)。しかしプライマリシリアルプライマリキーがシーケンス番号で更新されないようにするにはどうすればよいですか?

INSERT INTO u_account ('score') VALUES ('122233344'); 

私はこのような値を挿入します。

INSERT INTO u_account VALUES ('122233344'); 

これにより、主キーが更新されます。

私は、プライマリキーが次に来るはずの番号以外のものを受け入れることは望ましくありません。

誰かが私のためにこれを設定していたので、このコードを入力すると、

INSERT INTO u_account VALUES ('122233344'); 

それは主キーを無視して、スコアを更新します。

助けてください。

答えて

1

テーブルの2つのフィールドの順序を逆にする必要があるようです。次に、単一の列の値を挿入すると、「スコア」フィールドが上書きされ、主キーのシリアル・シーケンスを使用して他の列の値が生成されます。

CREATE TABLE u_account (
score int4, 
Jid serial primary key 
); 

INSERT INTO u_account VALUES ('122233344'); 
+0

Anschauungポストは動作しませんでした。 –

0

あなたはすべてのインサートにJID列の次のシーケンス値を代入し、トリガを書くことができます。この例では、私がしたいと思うものを行います。

1

あなたは例えば、主キーフィールドに正しい値を入れて、「DEFAULT」を使用することができます。

INSERT INTO u_account VALUES (DEFAULT, '122233344'); 
関連する問題