когда я делаю этот запрос я есть ошибкаProbleme с приращением ид
INSERT INTO FR_METIERPUBLI(
D_NIDMTR,
D_NIDPUBLI
)
VALUES (
'SELECT MAX(D_NIDMTR) FROM FR_METIERPUBLI + 1', 1000
Я хочу, чтобы увеличить свой идентификатор
когда я делаю этот запрос я есть ошибкаProbleme с приращением ид
INSERT INTO FR_METIERPUBLI(
D_NIDMTR,
D_NIDPUBLI
)
VALUES (
'SELECT MAX(D_NIDMTR) FROM FR_METIERPUBLI + 1', 1000
Я хочу, чтобы увеличить свой идентификатор
попробовать
INSERT INTO FR_METIERPUBLI(
D_NIDMTR,
D_NIDPUBLI)
SELECT MAX(D_NIDMTR) +1, 1000 FROM FR_METIERPUBLI
Однако .. быть очень осторожным с этим ..если 2 операции делают это в то же время вы получите дубликат
вы могли бы сделать (на SQL Server, по крайней мере,) оберните его в транзакцию и укажите эти блокировки
INSERT INTO FR_METIERPUBLI(
D_NIDMTR,
D_NIDPUBLI)
SELECT MAX(D_NIDMTR) +1, 1000 FROM FR_METIERPUBLI with (UPDLOCK, HOLDLOCK)
Почему вы не используете последовательность или идентификатор?
@Mercer, обратите внимание на эту деталь: Почему вы не используете последовательность или личность? – HLGEM
@HLGEM как использовать.? – Mercer
Зависит от базы данных onteh, которую вы используете. Это материал, специфичный для базы данных, но большинство баз данных позволяют автоматически увеличивать поле идентификатора. – HLGEM
, не зная, базы данных, это только предположение, но попробуйте это:
INSERT INTO FR_METIERPUBLI
(D_NIDMTR,D_NIDPUBLI)
SELECT
MAX(D_NIDMTR)+ 1, 1000
FROM FR_METIERPUBLI
для SQL Server, попытайтесь защитить от каких-либо строк существующих с помощью этого:
INSERT INTO FR_METIERPUBLI
(D_NIDMTR,D_NIDPUBLI)
SELECT
ISNULL(MAX(D_NIDMTR),0)+ 1, 1000
FROM FR_METIERPUBLI
рад, что вы отправили. Я собирался сделать себе идиота. –
Оставьте одиночные кавычки. И скажите нам базу данных SQL, которую вы используете - MySQL? SQL-сервер? Postgres? Oracle? – Oded
Вы никогда не должны назначать первичный ключ, как это, особенно если вы можете получить доступ к базе данных несколькими клиентами одновременно, потому что это может привести к дублированию идентификаторов. Большинство систем БД предоставляют последовательности или автоматически увеличивающиеся поля, которые вы должны использовать. – RoToRa