日度归档:2019年7月15日

mssql sqlserver 删除数据库中所有主键的方法分享


摘要:
下文通过举例的方式讲述删除数据库中所有主键的方法分享,如下所示:
实验环境:sql server 2008 R2



实现思路:
下文借助系统表sysobjects,遍历出所有主键名称和主键所属表名称,然后生成删除主键的sql脚本,
通过动态执行删除脚本,来达到删除主键的目的,如下所示

declare @PkName varchar(256);
declare @TableName varchar(256);
declare cursor1 cursor for 
Select b.name as TableName a.name as PkName from sysobjects a JOIN sysobjects b ON a.parent_obj = b.[id] where a.xtype='PK';
open cursor1 
fetch next from cursor1 into @TableName,@PkName
while @@fetch_status=0 
begin
exec('Alter table '+@TableName+' drop '+ @PkName) --删除主键sql脚本
print 'Alter table '+@TableName+' drop '+ @PkName   --打印sql脚本
fetch next from cursor1 into @TableName,@PkName
end
close cursor1 ;
deallocate cursor1;

MSSQL sqlserver中sql脚本里面”中括号”的作用简介说明


摘要:
下文讲述sql脚本中”中括号”的作用说明,如下所示:
实验环境:sql server 2008 R2


在一些sql脚本编写中,我们经常看见sql脚本中将一些系统对象名称使用中括号括起,那么这样做的原因为啥呢?
下文将一一道来。
在sql脚本编写中,中括号的作用如下:

可区分系统关键字,
例:
当我们使用系统关键字名称作为数据库中的一个对象名称时,此时如果使用中括号括起,则代表其中的对象名称为非系统关键字,而作为一个普通的对象名称。

例:
我们使用 user作为数据表名称,创建数据表时,应该使用中括号将表名括起来,如下:

   create table [user]
    (keyId int identity,
     info    varchar(30)
    );
    go
   select * from [user]
   go 
   /*
     如上面脚本所示:
        user 是一个系统关键字,用于普通对象时,需使用中括号括起
    */