|
1、CAST(chushengriqi as datetime) 强制数据类型转换 3、(DATEDIFF(day,CAST(indatetime as datetime),getdate())/365) 计算年(满一年为1) 4、得到当前年year(getdate()) 8、触发器 INSTEAD OF 执行触发器语句,但不执行触发触发器的 SQL 语句,比如试图删除一条记录时,将执行触发器指定的语句,此时不再执行 delete 语句。例: create trigger f on tbl instead of delete as insert into Logs... IF UPDATE(列名) 检查是否更新了某一列,用于 insert 或 update,不能用于 delete。例: create trigger f on tbl for update as if update(status) or update(title) sql_statement --更新了 status 或 title 列 inserted、deleted 这是两个虚拟表,inserted 保存的是 insert 或 update 之后所影响的记录形成的表,deleted 保存的是 delete 或 update 之前所影响的记录形成的表。例: create trigger tbl_delete on tbl for delete as declare @title varchar(200) select @title=title from deleted insert into Logs(logContent) values('删除了 title 为:' + title + '的记录') 说明:如果向 inserted 或 deleted 虚拟表中取字段类型为 text、image 的字段值时,所取得的值将会是 null。 9、触发器会滚事件 use 数据库名 go create trigger tr on 表名 for update as if update(userName) rollback tran 10、在触发器中,需要用到 SQL Server 的 inserted 和 deleted 两个虚拟表,在执行 sql
命令时,这两个虚拟表分别记录的内容如下:
sql命令 deleted inserted --------------------------------------------------- insert [不可用] 新插入的记录 update 被更新前的记录 被更新后的记录 delete 被删除的记录 [不可用] --------------------------------------------------- 11、触发器中判断结果集为空 if exists(select 1 from 表) print '不为空' else print '为空' 12、Sql随机取数据 MsSql随机取数据 select top 10 * from c_cy_admin order by newid() Access 随机取数据 select SELECT top 10 id FROM 表1 order by rnd(id) mySql 随机取数据 SELECT id FROM gueze order by rand() limit 10 13、触发器中条件判断 if (@lend = '借' or @lend<>null) begin @money = @lend_for end else begin @money = @lend_in end 13、触发器中给变量赋值: set @money = @lend_in 14、设置默认值:ISNULL(zhidaun,默认值) 15、跟在FOR EACH ROW后面的语句定义了每次激活触发程序时将执行的程序,对于受触发语句影响的每一行执行一次 16、 1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用) 法一:select * into b from a where 1<>1 法二:select top 0 * into b from a 2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b; 17、递归触发器 --要设置允许递归触发才行: alter database 你的库名 set RECURSIVE_TRIGGERS ON RECURSIVE_TRIGGERS ON | OFF 如果指定为 ON,将允许递归激发触发器。RECURSIVE_TRIGGERS OFF(默认值)只禁止直接递归。若要也禁用间接递归,请使用 sp_configure 将 nested triggers 服务器选项设置为 0。 18、触发器的高级应用 http://xinjn.net/html/database/Sybase/38661/ 19、去掉左右空格rtrim(ltrim(name)) 20、反转字符串REVERSE('dsads')---String 21、得到第一个字符的位置charindex('s','dsadad')---int 22、用sql实现分页select top 10 * from tabAccount where id not in(select top 20 id from tabAccount order by id) order by id 估计效率不高 23、判断字段是否是数字ISNUMERIC(xingming) 如果是数字返回1,不是数字返回0
|
一共有 0 条评论