0

このリクエストを行うと、エラーが発生します

INSERT INTO FR_METIERPUBLI(
D_NIDMTR,
D_NIDPUBLI
)
VALUES (
'SELECT MAX( D_NIDMTR ) FROM FR_METIERPUBLI + 1', 1000

IDを増やしたい

4

2 に答える 2

1

データベースを知らなくても、これは単なる推測ですが、これを試してください:

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
于 2010-05-25T14:52:51.673 に答える
1

試す

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)

シーケンスやアイデンティティを使用しないのはなぜですか?

于 2010-05-25T14:54:39.640 に答える