SqlServer数据库DROP TABLE IF EXISTS语句

近日碰到SqlServer数据库版本不一致,执行建表脚本时DROP TABLE IF  EXISTS语法的小问题,自己做个记录便于后续查看。

在SqlServer2016版本及更高版本,建表前判断表是否存在,可以使用:

DROP TABLE IF EXISTS myschema.mytable;
CREATE TABLE myschema.mytable(
	STUNAM varchar(20) not null default '',

	CRTTIM datetime DEFAULT CURRENT_TIMESTAMP,  
 	UPDTIM datetime DEFAULT CURRENT_TIMESTAMP , 
	PRIMARY KEY (STUNAM)
);
 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'demo表',  @level0type=N'SCHEMA', @level0name=N'myschema', @level1type=N'TABLE', @level1name=N'mytable'; -- 添加表注释
 -- 添加字段注释
 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'学生姓名',  @level0type=N'SCHEMA', @level0name=N'myschema', @level1type=N'TABLE', @level1name=N'mytable', @level2type=N'column', @level2name=N'STUNAM';

但是在 低版本的SqlServer并不支持, DROP TABLE IF  EXISTS 的语法,可替换成:

IF OBJECT_ID(N'myschema.mytable', N'U') IS  NOT  NULL 
DROP TABLE myschema.mytable;

 在低版本执行 DROP TABLE IF  EXISTS 会报错 在应使用条件的上下文中指定了非布尔类型的表达式

 

 

  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在SQL中,IF EXISTS语句用于检查某个对象是否存在。该语句通常与其他语句结合使用,例如CREATE、DROP或ALTER语句。它可以帮助我们在执行某些操作之前先检查对象是否存在,从而避免引发错误。 下面是一个使用IF EXISTS语句的示例: ``` IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'table_name') AND type = N'U') PRINT 'Table exists.' ELSE PRINT 'Table does not exist.' ``` 在上述示例中,我们使用IF EXISTS语句来检查数据库中是否存在名为"table_name"的表。如果该表存在,则输出"Table exists.",否则输出"Table does not exist."。 需要注意的是,在上述示例中,我们使用了sys.objects系统视图来检查对象的存在性。你可以根据具体的对象类型和名称进行修改。 参考资料: <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [if exists 用法](https://download.csdn.net/download/chunzhijieqjq/10018928)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【SQL server基础】判断数据库、表格、视图、存储过程、函数书否存在](https://blog.csdn.net/ZS769650286/article/details/101278393)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [[sql] SQL Server判断对象是否存在](https://blog.csdn.net/weixin_30636089/article/details/94967611)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值