如果该表在' sysobjects'中不存在,则运行SQL语句来创建表。该表在不存在时成功创建,但是,一旦表存在,我在运行时会出现错误。此表必须始终保留且不被删除,这仅适用于首次运行实例。
IF NOT EXISTS (SELECT * FROM sysobjects WHERE name = '[tablename]')
CREATE TABLE [tablename]
(
jobID int,
fileName varchar (255),
pathName varchar (255),
);
因此,一旦创建了这个表,脚本就会再次运行,并且由于该表已经存在,它将在此SQL语句中出错。
非常感谢任何帮助。
答案 0 :(得分:2)
你不需要在表名,创作中引用:
IF NOT EXISTS (SELECT * FROM sysobjects WHERE name = '[tablename]')
CREATE TABLE [tablename]
(
jobID int,
fileName varchar (255),
pathName varchar (255),
);
您正在创建一个名为'[tablename]'
的表,并且您正在寻找名为[tablename]
的表。
答案 1 :(得分:2)
在检查表格时避免使用方括号(' ['&']' )
IF NOT EXISTS (SELECT * FROM sysobjects WHERE name = 'tablename')
CREATE TABLE [tablename]
(
jobID int,
fileName varchar (255),
pathName varchar (255),
);
答案 2 :(得分:1)
你的问题真的太棒了...... :)
IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'tablename')
Begin
CREATE TABLE tablename
(
jobID int,
fileName varchar (255),
pathName varchar (255),
)
End
Go
我认为[& ]让你感到困惑:)
答案 3 :(得分:-1)
如果您只想避免错误..
如果表存在,那么不要创建表,这里是代码,以便于检查以避免错误。
IF OBJECT_ID('[tablename]') IS NULL
BEGIN
CREATE TABLE '[tablename]'
(
jobID int,
fileName varchar (255),
pathName varchar (255),
);
END
如果这是新创建的表,并且您想要检查是否已存在并且您想要DROP并创建(不建议)
IF OBJECT_ID('[tablename]') IS NOT NULL
DROP TABLE [tablename]
CREATE TABLE '[tablename]'
(
jobID int,
fileName varchar (255),
pathName varchar (255),
);
希望这有帮助。