标签归档:sqlserver

mssql sqlserver数据库中为数据表“添加带判断提示信息的唯一约束”的方法分享


摘要:
下文讲述sqlserver数据库中添加带提示信息的约束方法分享,如下所示:
实验环境:sql server 2008 R2


在sqlserver中,如果我们需做唯一性约束,我们可以采用设置唯一索引,设置主键的方法,达到指定列的唯一值,
但是这些唯一值的限制只能做到禁止进行下一步操作,无法向客户端进行相关提示操作,下文将讲述变相实现唯一约束判断的方法分享,如下所示:

实现思路:
使用触发器对唯一约束进行判断和提示

例:
为数据表”maomao365.com” 中的keyId列设置唯一约束,当插入列值出现重复时,给出相应的错误提示,如:

     create table [maomao365.com]
(keyId int,info nvarchar(30))
go

---设置唯一约束
CREATE TRIGGER tr_maomao365
 on [maomao365.com]  
 AFTER INSERT,UPDATE
AS 
BEGIN
	SET NOCOUNT ON; 
	if exists(
	select null from 
	 (
	     select  keyId,count(1) as q from   [maomao365.com] where keyId in (
	            select keyId from inserted
	    ) group by keyId  
	) as t where t.q >1 
	)
	BEGIN
		ROLLBACK TRAN;
		RAISERROR('keyId存在重复',16,1);
	END
END
GO



insert into [maomao365.com] (keyId,info)
values
(1,'sqlserver')

insert into [maomao365.com] (keyId,info)
values
(2,'sqlserver')

go
truncate table [maomao365.com]
drop     table [maomao365.com]

唯一性约束自定义提示信息

唯一性约束自定义提示信息


相关阅读:
唯一索引

mssql sqlserver 动态sql超过4000字符的处理方法分享


摘要:
下文讲述动态sql时,如果字符串长度超过4000的处理方法,如下所示:
实验环境:sql server 2012


实现思路:
定义一个nvarchar(max)的字段,然后将动态sql拼接后放入此字段中,既可达到处理动态sql超过4000。
例:

    
declare @SQL nvarchar(max), @SQL1 nvarchar(4000), @SQL2 nvarchar(4000) 

set @SQL1 = N'sql1';  ---超过4000  
set @SQL2 = N'sql2';  ---超过4000  
 
set @SQL = concat(@SQL1, @SQL2);
exec SP_EXECUTESQL @SQL; 

GO

mssql sqlserver sql脚本暂停指定时间运行的方法分享


摘要:
下文讲述sql暂停指定时间运行的方法分享,如下所示:
实验环境:sql server 2008 R2

实现思路:
使用关键字waitfor关键字
例:

print '启动秒数:'+datename(second,getdate())

waitfor delay '00:00:02'
print '暂停2秒'
print ':'+datename(second,getdate()) 

--到22:15:25运行
waitfor time '22:15:25'
print '22:15:25秒运行'

print ':'+datename(second,getdate())
mssql_sqlserver_sql脚本指定时间运行

mssql_sqlserver_sql脚本指定时间运行