当我这样做时,我有一个错误
INSERT INTO FR_METIERPUBLI(
D_NIDMTR,
D_NIDPUBLI
)
VALUES (
'SELECT MAX( D_NIDMTR ) FROM FR_METIERPUBLI + 1', 1000
我想增加我的身份
答案 0 :(得分: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
答案 1 :(得分: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)
为什么不使用序列或身份?