从Visual Studio SQL Server中的序列获取NextVal

从Visual Studio SQL Server中的序列获取NextVal,sql,sql-server,Sql,Sql Server,我试图使用序列中的下一个值插入到表中。这会在Visual Studio的LocalDB中导致错误,但可在SQL Developer中使用 insert into department (id_department, name, abbreviation, dept_head) values (id_department_seq.nextval, 'School of Communications, Media, Arts and Design', department_abbreviation_

我试图使用序列中的下一个值插入到表中。这会在Visual Studio的
LocalDB
中导致错误,但可在SQL Developer中使用

insert into department (id_department, name, abbreviation, dept_head)
values (id_department_seq.nextval, 'School of Communications, Media, Arts and Design', department_abbreviation_seq.nextval, 'Nate Horowitz');
获取此错误

味精4104,第16级,状态1,第63行
无法绑定多部分标识符“id\u department\u seq.nextval”

味精4104,第16级,状态1,第63行
无法绑定多部分标识符“department\u缩写\u seq.nextval”


将其放在insert语句之前,以确保已创建序列

if not exists(select * from sys.sequences where name ='id_department_seq') then
 begin
  create sequence id_department_seq start with 1000 increment by 1 minvalue 1000 maxvalue 99999;
end

insert into ....

在我看来,为序列获取下一个值的语法很奇怪。我熟悉以下几点:

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'
    );

未在所连接的数据库中定义序列。您可以尝试使用由三部分组成的名称。否我已经定义了序列
创建序列id\u department\ seq以1000递增1 minvalue 1000 maxvalue 9999运行此操作:从sys.sequences中选择*name='id_department_seq',如果有结果,那么您就不能连接到创建seq@span-ō!ŷXmoůŜ的同一个数据库。那么如何修复该问题呢?那么查询的结果是什么?它可以在sys.sequences表中找到吗?Thank works仍然无法理解为什么相同的代码可以在SQL developer中工作,但不能在Visual Studio SQL数据库中工作:)我不确定,但我更喜欢这里的代码,因为它最终将由SQL引擎进行解释,这样您就不必担心给定的客户端(在本例中为VS)正在进行预处理。TL;DR-这更接近“裸机”,因此更可能适用于更多场景。