0

当我做这个请求时,我有一个错误

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

我想增加我的身份证

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

但是..对此要非常小心..如果两个操作同时执行此操作,您将得到一个重复

您可以(至少在 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 回答