• 欢迎访问VPS岛网站,国外VPS,国内VPS,国外服务器,国内服务器,服务器主机,测评及优惠码,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站 QQ群

mysql的高级进阶(二)

mysql技术 朴嫖乐 54次浏览 已收录 0个评论

触发器

触发器是,当我们插入,删除或者修改特定表中的额数据时会触发执行。
特性:
监视的对象:表
监视事件:update/delete/insert
触发时间:after/before
触发事件:update/delete/insert
触发器不能直接被调用,在某个特定的时间,触发特定的事件时,数据库会自动调用。
触发器的语法结构
create trigger trigger_name trigger_time trigger_event on table_name for each row
begin
sql语句1;
sql语句2;
end

table_name 是触发器监听的表名,不能是视图
trigger_time 是触发程序的时间,可以是BEFORE|AFTER以指定触发程序是在激活它的语句之前还是之后触发。
trigger_event:指明了激活触发程序的语句的类型,可以如下
insert:插入新的数据时触发
update:更改某一行时触发
delete:删除某一行是触发。
特别说明:
1对于insert 而言 新插入的行用new来表示,行中的每一列的值用new.列名表示。
2对于delete而言:原本有一行,后来被删除,想引用被删除的这一行,用old来表示,old.列名可以引用被删除行的值。
3 对于update而言,对于update而言,修改前的数据,用old表示,old.列名引用被修改之前的行的值。修改后的数据用new来表示,new.列名引用修改之后行的值。
例子:
mysql的高级进阶(二)
这时我们一旦向employees表中插入一条数据,就会往salaries表中插入一条数据。
mysql的高级进阶(二)
这时我们删除employees这张表的数据之前就删除了salaries表中一条数据。
mysql的高级进阶(二)
当我们修改employees表的数据时,就修改salaries中的数据。
触发器的管理
查看所有的触发器
show triggers;
mysql中有一个information_schema.triggers表,存储所有库中的所有触发器。
select * from information_schema.triggers where trigger_name=’触发器名字’\G;
删除触发器
drop trigger 触发器;

MyISAM表锁

锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据也是一种供许多进程共享的资源,如何保证数据并发访问的一致性,有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素,从这个角度来说,锁对数据库而言显得尤为重要,也更加复杂。
mysql的高级进阶(二)
mysql表锁的模式
mysql的高级进阶(二)
共享读锁
我们在一个进程给表设置了共享读锁 lock table 表名 read,别的进程能查询这张表,但是不能增删改这张表,这时操作会出现锁等待,当我们使用unlock tables开锁后,别的进程就能执行了。
我们可以使用show variables like ‘table_locks_waited’ 可以看到有多少锁等待,如果数据大量,说明等待的进程较多。
独占写锁
我们在一个进程给表设置了独占写锁 lock table 表名 write,别的进程不能查询这张表,也不能增删改这张表,这时操作会出现锁等待,当我们使用unlock tables开锁后,别的进程就能执行了。
我们可以使用show variables like ‘table_locks_waited’ 可以看到有多少锁等待,如果数据大量,说明等待的进程较多。
总结:
mysql的高级进阶(二)
myisam表锁的调度
mysql的高级进阶(二)


VPS岛 的文章和资源来自互联网,仅作为参考资料,如果有侵犯版权的资源请尽快联系站长,我们会在24h内删除有争议的资源。丨 转载请注明mysql的高级进阶(二)
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址