创建过程不会识别DB

时间:2015-10-26 23:24:48

标签: sql-server database stored-procedures

我试图创建并执行一个创建一些表的过程。它不会识别我的数据库。

USE [db1]
go
create procedure version_1 as
    update db1 
        set ver=1
        where ver=0;
    create table Staff_Titles(
        title nvarchar(100) not null,
        title_description nvarchar(200) null,
[..]
go

即使来自更新db1的db1带有下划线,它也会编译。因此ver = 1且ver = 0。在我尝试执行它之后,它说

  

无效的对象名称

再次出现在USE [DB1],它在存储过程中......

我尝试刷新数据库,我尝试寻找编辑 - >智能感知但我无法找到它,我尝试了Ctrl + shift + R,没有任何效果。 enter image description here enter image description here

2 个答案:

答案 0 :(得分:0)

IntelliSense告诉您它无法在db1数据库中找到名为db1的表。确保该表存在或者它是否在不同的模式中,请确保包含模式,如下所示:

update db1.schmaname.db1 
    set ver=1
    where ver=0;

如果您要存储版本数据,则必须添加表和字段来存储此信息。您无法更新数据库中的字段,因为数据库级别没有直接的字段。您可以使用名为“ver”的字段创建名为“Versions”的表。

CREATE TABLE Versions
(
    [Ver] [int] NOT NULL,
    CONSTRAINT [PK_Versions] PRIMARY KEY CLUSTERED (Ver ASC)
)

然后,当您运行该过程时,它可以插入一条记录以指示表已使用该版本进行更新。像这样:

insert into Versions
values (1)

然后,如果您需要查询最新版本,可以使用:

select max(Ver) Ver from Versions

答案 1 :(得分:0)

如果您“只是”创建了该数据库,则可能需要尝试清除智能感知缓存。使用按键Ctrl-Shift-RCtrl-R