摘要:关于sql语句判断的用法注意点备注下,项目中遇到更新字段和注释的数据库table,因为有多个数据库,存在字段的就不更新了,不存在的更新字段新增和注释增加......
1.介绍
if not exists 即如果不存在,if exists 即如果存在
2.使用
a.判断数据库不存在时
if not exists(select * from sys.databases where name = 'database_name')
b.判断表不存在时
if not exists (select * from sysobjects where id = object_id('table_name') and OBJECTPROPERTY(id, ’IsUserTable’) = 1)
c.判断列不存在
if not exists (select * from syscolumns where id=object_id(’table_name’) andname=’column_name’)
当判断的表不存时,我可以执行创建数据库,创建表,增加列,可以执行相应的SQL语句;
而if exists同理判断,首先判断查询结果是否存在,如果存在执行判断后面的语句,查询的数据库,表,列的方法相同;
PS:假如判断后面要执行多个语句可以加Begin......End
例如:
/*新增安全庫存量欄位*/
if not exists (select * from syscolumns where id=object_id('product') and name='safety_stock_qty')
BEGIN
alter table product add safety_stock_qty decimal(5,2) DEFAULT ((0))
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'料品安全库存量' ,
@level0type=N'user',@level0name=N'dbo',
@level1type=N'TABLE',@level1name=N'product',
@level2type=N'COLUMN',@level2name=N'safety_stock_qty'
END
特别注意的是注释语句中sql2000用的是@level0type=N'user',sql2005以后用的是@level0type=N'SCHEMA'
转载自:
http://blog.sina.com.cn/s/blog_b5fe6b270101ahc1.html