You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Visual Studio SQL Server LocalDB调用序列nextval插入数据报错求助

解决LocalDB中序列插入报错的问题

你碰到的问题本质是Oracle(SQL Developer对应的数据库)和SQL Server(LocalDB属于SQL Server家族)的序列调用语法不一样导致的。

在Oracle里,我们习惯用序列名.nextval来获取序列的下一个值,但SQL Server完全不支持这种写法——它会把id_department_seq.nextval当成一个多部分标识符(比如表.列这种格式),但实际上不存在这样的对象,所以就抛出了Msg 4104的绑定错误。

正确的SQL Server写法

把所有序列名.nextval替换成NEXT VALUE FOR 序列名就可以了,你的插入语句修改后应该是这样:

INSERT INTO department (id_department, name, abbreviation, dept_head)
VALUES (
    NEXT VALUE FOR id_department_seq,
    'School of Communications, Media, Arts and Design',
    NEXT VALUE FOR department_abbreviation_seq,
    'Nate Horowitz'
);

额外提醒

如果你的序列还没在LocalDB里创建,要确保用SQL Server的语法创建序列,比如:

-- 创建id序列
CREATE SEQUENCE id_department_seq
    START WITH 1
    INCREMENT BY 1;

-- 创建缩写序列
CREATE SEQUENCE department_abbreviation_seq
    START WITH 1
    INCREMENT BY 1;

这样执行插入语句就不会报错啦。

内容的提问来源于stack exchange,提问作者Shivam

火山引擎 最新活动