Как предотвратить первичный серийный первичный ключ от обновления с номером не в последовательности? - PullRequest
0 голосов
/ 28 июня 2009
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');

будет игнорировать первичный ключ и просто обновлять счет.

Пожалуйста, помогите.

Ответы [ 3 ]

1 голос
/ 20 июля 2009

Вы можете использовать «ПО УМОЛЧАНИЮ», чтобы ввести правильное значение в поле первичного ключа, например:

INSERT INTO u_account VALUES (DEFAULT, '122233344');
1 голос
/ 28 июня 2009

Похоже, вы должны просто изменить порядок двух полей в вашей таблице. Затем, если вы ВСТАВИТЕ значение одного столбца, оно перезапишет поле «оценка» и использует последовательную последовательность первичного ключа для генерации значения для другого столбца. Этот пример делает то, что я думаю, что вы хотите:

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

INSERT INTO u_account VALUES ('122233344');
0 голосов
/ 20 июля 2009

Вы можете написать триггер, который заменяет следующее значение последовательности для столбца jid при каждой вставке.

...