【发布时间】:2017-08-11 20:11:19
【问题描述】:
与this question 相关:我正在尝试使用以下查询
IF NOT EXISTS(
SELECT T.name FROM SYS.TABLES T JOIN SYS.SCHEMAS S ON (T.SCHEMA_ID = S.SCHEMA_ID)
WHERE S.NAME = 'DBO' AND T.NAME = 'sample2Prot'
)
BEGIN CREATE TABLE[TCPDUMP].[dbo].[sample2Prot]
(
[IdTransmission] INT IDENTITY(1, 1) NOT NULL,
[timestp] NVARCHAR(32) NULL,
[idq] NVARCHAR(32) NULL,
[idz] NVARCHAR(32) NULL,
[prot] NVARCHAR(32) NULL,
[Lhowmany] NVARCHAR(32) NULL,
[Rhowmany] NVARCHAR(32) NULL,
CONSTRAINT[PK_TCPDump] PRIMARY KEY CLUSTERED([IdTransmission] ASC)
)
END;
CREATE my_table.." 部分有效,但如果表已存在,则程序在执行期间会引发错误:似乎“如果不存在”语句不起作用。有人解释一下吗?
欢迎询问更多详情
【问题讨论】:
-
and t.name = my_table似乎缺少引号。除此之外,我无法复制您的问题:此语句不会尝试创建已经存在的表。IF (OBJECT_ID('dbo.mytable', 'U') IS NULL)是一个较短的选择。您是在尝试在错误的数据库中执行此语句,还是在没有权限对表执行任何操作的帐户下执行此语句? -
您还需要创建一个表为 CREATE TABLE my_table...
-
@Leonidas199x 我没有在帖子中复制这个,因为这部分似乎有效,但查询的其余部分存在 x)
-
@JeroenMostert 通常我已经获得了所有权限..我暂时没有实现任何用户^^!
-
你是在数据库
TCPDUMP(USE TCPDUMP)中执行这个吗?如果不是,则检查将失败,因为系统视图的范围仅限于数据库。
标签: sql-server