当前位置:Gxlcms > 数据库问题 > SQL 视图 局部变量 全局变量 条件语句 事务 触发器

SQL 视图 局部变量 全局变量 条件语句 事务 触发器

时间:2021-07-01 10:21:17 帮助过:26人阅读

select @@ERROR    --返回最后执行的 Transact-SQL 语句的错误代码(integer)(如果最后一条语句不出错,就一直是0)

select @@IDENTITY   --返回最后插入的标识值

select USER_NAME()    --返回用户数据库用户名

select @@CONNECTIONS  --返回自上次SQL启动以来连接或试图连接的次数。

select GETDATE() --当前时间

select @@CPU_BUSY/100  --返回自上次启动SQL 以来 CPU 的工作时间,单位为毫秒

USE tempdb select @@DBTS  as w  --为当前数据库返回当前 timestamp 数据类型的值。这一 timestamp 值保证在数据库中是唯一的。

select @@IDLE  as w  --返回SQL自上次启动后闲置的时间,单位为毫秒

select @@IO_BUSY AS w   --返回SQL自上次启动后用于执行输入和输出操作的时间,单位为毫秒

select @@LANGID AS w   --返回当前所使用语言的本地语言标识符(ID)

select @@LANGUAGE AS w   --返回当前使用的语言名

select @@LOCK_TIMEOUT as w  --当前会话的当前锁超时设置,单位为毫秒。

select @@MAX_CONNECTIONS  as w  --返回SQL上允许的同时用户连接的最大数。返回的数不必为当前配置的数值

EXEC sp_configure  --显示当前服务器的全局配置设置

select @@MAX_PRECISION as w --返回 decimal 和 numeric 数据类型所用的精度级别,即该服务器中当前设置的精度。默认最大精度38。

select @@OPTIONS  as w  --返回当前 SET 选项的信息。

select @@PACK_RECEIVED as w  --返回SQL自启动后从网络上读取的输入数据包数目。

select @@PACK_SENT as w  --返回SQ自上次启动后写到网络上的输出数据包数目。

select @@PACKET_ERRORS as w  --返回自SQL启动后,在SQL连接上发生的网络数据包错误数。

select @@SERVERNAME as w --返回运行SQL服务器名称。

select @@SERVICENAME  as w --返回SQL正在其下运行的注册表键名

select @@TIMETICKS  as w --返回SQL服务器一刻度的微秒数

select @@TOTAL_ERRORS AS w  --返回 SQL服务器自启动后,所遇到的磁盘读/写错误数。

select @@TOTAL_READ  as w  --返回 SQL服务器自启动后读取磁盘的次数。

select @@TOTAL_WRITE as w  --返回SQL服务器自启动后写入磁盘的次数。

select @@TRANCOUNT  as w  --返回当前连接的活动事务数。

select @@VERSION as w  --返回SQL服务器安装的日期、版本和处理器类型。

 


四.条件语句


1.条件语句

技术分享
  1. if(条件表达式)
  2. begin
  3. 语句...
  4. end
  5. else
  6. begin
  7. 语句...
  8. end
技术分享

2.循环语句

  1. while
  2. begin
  3. 语句....
  4. break/continue
  5. end

五.事务(去不了终点,回到原点)


1.事务:如果你要一起执行多条语句,如果有一条失败你就可以让他们全部都撤销执行。

技术分享
  1. begin tran --开启一个事物
  2. delete from city
  3. select * from city ---这里查询没有数据,因为上一句删除了
  4. rollback tran
  5. select * from city --这里在查询,惊奇的发现,数据又恢复了,因为上一句rollback是 让这个事务回滚的效果,
  6. begin tran --开启一个事物
  7. delete from city
  8. select * from city ---这里查询没有数据,因为上一句删除了
  9. commit tran
  10. select * from city --这里在查询,不好意思,数据真的没了,即便下边你在rollback数据也回不来了,因为commit执行了数据真的把数据删掉了
技术分享

2.事务小案例

技术分享
  1. ---bank表为转账表,MeMoney字段为我的账余额,HeMoney为朋友的账户余额,这个事务完成的是我给朋友转账
  2. begin tran
  3. declare @ersum int --定义这个局部变量为了记载这个事务过程中是否会出错,如果出错则最终将得不到为0的值,也就完成了我们判断这个事务是否出错过
  4. set @ersum=0
  5. update bank set MeMoney=MeMoney-1000 where ID=me ---从我卡里扣掉1000
  6. set @ersum=@ersum+@@ERROR --如果不出错这里还是0,如果错了,这里将不是0
  7. update bank set HeMoney=HeMoney+100 where ID=he ---给我朋友卡里加上1000
  8. set @ersum=@ersum+@@ERROR --如果这里的结果是0将表明没有出错
  9. if(@ersum<>0) --true有错,false没错
  10. begin
  11. rollback tran ---回滚事务
  12. end
  13. else
  14. begin
  15. commit tran --执行事务<br>end
技术分享

六.触发器


1.触发器,当数据库中的表有所改动(添删改)是会触发一中事件,这样一种机制,就是触发器。

2.触发器种类:after跟for一样,是语句执行完毕后触发事件。instead of :本来你要执行一种操作,结果执行了另外一种操作,原本要执行的操作被替换。

3.触发器的创建

  1. create trigger 触发器名 on 操作表(实际要操作的表)
  2. for|after|instead of --选其任意一种类型,其中for跟after是一样的
  3. update|delete|insert --原本要执行哪一种动作
  4. as
  5. sql语句..... ---你想要执行的sql语句

4.触发器的小案例

技术分享
  1. --这个例子是,删除Tb1里面的数据,把删除的数据同时备份到Tb1Bak表中
  2. create trigger tri_bak on Tb1 --声明一个tri_bak ,如果Tb1表中的数据变化触发这个触发器
  3. after delete ---删除完成后执行下面的操作
  4. as
  5. insert into Tb1Bak select * from deleted ---这里的deleted是系统自动生成的表,存放为上一次的数据库表中删除的数据。
技术分享

 

5.小知识点:数据更新插入删除的过程为,插入数据库表的同时,也插入了系统表的insert表,删除的同时把删除的这条数据插入到了deleted表中,跟新的同时,deleted表中插入就数据,insert表中也添加了新数据。  我这里的insert 、deleted表都为系统自动生成的,不是我们操作的表。


七.如果我哪里写错了,或者你想说点什么,欢迎留言。。

SQL 视图 局部变量 全局变量 条件语句 事务 触发器

标签:ted   显示   src   数据   read   全局配置   erro   信息   用户数   

人气教程排行