|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
mysql使用内部操作字符集gbk来进行操作,即执行"SELECT*FROMtestWHEREname=xxxor1=1/*LIMIT1";从而注入成功明天看到有伴侣在群中问可否为触发器设置实行按次,有伴侣说触发器在数据库中主动实行,以是不克不及够设置实行按次。实在这类说法是不合错误的,我们能够使用sp_settriggerorder为部分触发器设置实行按次。
先看看sp_settriggerorder的功效申明:
sp_settriggerorder:指定第一个引发或最初一个引发的AFTER触发器。在第一个和最初一个触发器之间触发的AFTER触发器将按不决义的按次实行。
语法申明:
sp_settriggerorder[@triggername=][triggerschema.]triggername,
[@order=]value,
[@stmttype=]statement_type[,[@namespace=]{DATABASE|SERVER|NULL}]
参数申明:
@triggername=][triggerschema.]triggername
要设置或变动其按次的触发器的称号及其所属的架构。
[@order=]value
触发器的新按次的设置,能够是以下值中的恣意一个值。
First--触发器被第一个触发。
Last--触发器被最初一个触发。
None--触发器以不决义的按次触发。
[@stmttype=]statement_type
指定触发器的范例,能够是INSERT、UPDATE、DELETE、LOGON或用于引发DDL触发器的DDL事务中列出的任何Transact-SQL语句事务。
@namespace={DATABASE|SERVER|NULL}
假如triggername是DDL或登录触发器,则指定所创立的triggername是具无数据库局限仍是服务器局限。
前往值:
0(乐成)或1(失利)
注重:
1,当触发器被修正,那末对它的sp_settriggerorder设置也会生效,也就是说每次修正触发器后,你都必要从头使用sp_settriggerorder对实行按次举行设置。
2,统一范例的触发器(insert,update,delete)只能设置一个First与一个Last触发器,也就是说,只能设置一个开始实行的与最初实行的触发器,两头的就设置不了。
示例代码:
设置insert触发器ti_Storage_MoveDetail为第一个实行的触发器
sp_settriggerorderti_Storage_MoveDetail,first,insert
设置update触发器tu_Storage_MoveDetail为最初一个实行的触发器
sp_settriggerordertu_Storage_MoveDetail,last,update
以是,假如触发器不是insteadof触发器,并且每类(insert,update,delete)的触发器数目不凌驾3个,那我们就完整能够把持实行按次。在JOIN操作中(需要从多个数据表提取数据时),MySQL只有在主键和外键的数据类型相同时才能使用索引。 |
|