trigger trigger1_before_insert_tb1 before insert on tb1 for each rowbegin ...end
before可以换成after, insert可以换成delete,update.
文章插图
在想tb1插入数据后,tb2结果:
文章插图
触发器获得用户提交的数据:
create trigger tri_after_insert_tb1 after insert on tb1 for each rowbegin NEW.nid (为用户新提交过来的 tb1.nid的值) NEW.name(为用户新提交过来的tb1.name的值)insert into tb2(num) values(NEW.nid);endcreate trigger tri_after_delete_tb1 after delete on tb1 for each rowbegin OLD.nid (为删除的tb1.nid的值) OLD.name(为删除的tb1.name的值)insert into tb2(num) values(OLD.nid);endcreate trigger tri_after_update_tb1 after update on tb1 for each rowbegin NEW.nid (为用户新提交过来的 tb1.nid的值) NEW.name(为用户新提交过来的tb1.name的值) OLD.nid (为删除的tb1.nid的值) OLD.name(为删除的tb1.name的值)insert into tb2(num) values(OLD.nid),(New.nid);end2. 删除触发器
drop trigger tri_after_insert_tb1;3. 使用触发器:调用触发条件即可 。
四 事务
事务多用于原子性操作,一旦某个操作引起了错误或者警告,可以回滚到原来的状态,保持数据库的完整性 。
delimiter //create procudureprocudure1( OUT return varchar(20))begin declare exit handler for sqlexception --发生错误会执行的程序代码块 begin-- ERRORset return = "Error";rollback;end;declare exit handler for sqlwarning--发生警告会执行的程序代码块 begin-- WARNINGset return = "Warn";rollback;end;start transaction;delete from table1; insert into table2(name) values(‘damon‘); --如果这条命令和上条命令出现错误或警告,会执行上面错误代码块或警告代码块 commit;-- SUCCESSset return = "Success ";--如果ransaction代码块中没有错误发生,就会执行到这条命令END//delimiter ; 四 函数
文章插图
文章插图
CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符 。一个多字节字符算作一个单字符 。对于一个包含五个二字节字符集, LENGTH()返回值为 10, 而CHAR_LENGTH()的返回值为5 。CONCAT(str1,str2,...) 字符串拼接 如有任何一个参数为NULL,则返回值为 NULL 。CONCAT_WS(separator,str1,str2,...) 字符串拼接(自定义连接符) CONCAT_WS()不会忽略任何空字符串 。(然而会忽略所有的 NULL) 。CONV(N,from_base,to_base) 进制转换 例如:SELECT CONV(‘a‘,16,2); 表示将 a 由16进制转换为2进制字符串表示 FORMAT(X,D) 将数字X 的格式写为‘#,###,###.##‘,以四舍五入的方式保留小数点后 D 位,并将结果以字符串的形式返回 。若 D 为 0, 则返回结果不带有小数点,或不含小数部分 。例如:SELECT FORMAT(12332.1,4); 结果为: ‘12,332.1000‘ INSERT(str,pos,len,newstr) 在str的指定位置插入字符串pos:要替换位置其实位置len:替换的长度newstr:新字符串 特别的:如果pos超过原字符串长度,则返回原字符串如果len超过原字符串长度,则由新字符串完全替换 INSTR(str,substr) 返回字符串 str 中子字符串的第一个出现位置 。LEFT(str,len) 返回字符串str 从开始的len位置的子序列字符 。LOWER(str) 变小写 UPPER(str) 变大写 LTRIM(str) 返回字符串 str,其引导空格字符被删除 。RTRIM(str) 返回字符串 str,结尾空格字符被删去 。SUBSTRING(str,pos,len) 获取字符串子序列 LOCATE(substr,str,pos) 获取子序列索引位置 REPEAT(str,count) 返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count。若 count <= 0,则返回一个空字符串 。若str 或 count 为 NULL,则返回 NULL。REPLACE(str,from_str,to_str) 返回字符串str 以及所有被字符串to_str替代的字符串from_str。REVERSE(str) 返回字符串 str,顺序和字符顺序相反 。RIGHT(str,len) 从字符串str 开始,返回从后边开始len个字符组成的子序列 SPACE(N) 返回一个由N空格组成的字符串 。SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len) 不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos 。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos 。使用 FROM的格式为标准 SQL 语法 。也可能对pos使用一个负值 。假若这样,则子字符串的位置起始于字符串结尾的pos 字符,而不是字符串的开头位置 。在以下格式的函数中可以对pos 使用一个负值 。mysql> SELECT SUBSTRING(‘Quadratically‘,5);-> ‘ratically‘ mysql> SELECT SUBSTRING(‘foobarbar‘ FROM 4);-> ‘barbar‘ mysql> SELECT SUBSTRING(‘Quadratically‘,5,6);-> ‘ratica‘ mysql> SELECT SUBSTRING(‘Sakila‘, -3);-> ‘ila‘ mysql> SELECT SUBSTRING(‘Sakila‘, -5, 3);-> ‘aki‘ mysql> SELECT SUBSTRING(‘Sakila‘ FROM -4 FOR 2);-> ‘ki‘ TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) TRIM(remstr FROM] str) 返回字符串 str,其中所有remstr 前缀和/或后缀都已被删除 。若分类符BOTH、LEADIN或TRAILING中没有一个是给定的,则假设为BOTH。remstr 为可选项,在未指定情况下,可删除空格 。mysql> SELECT TRIM(‘ bar ‘);-> ‘bar‘ mysql> SELECT TRIM(LEADING ‘x‘ FROM ‘xxxbarxxx‘);-> ‘barxxx‘ mysql> SELECT TRIM(BOTH ‘x‘ FROM ‘xxxbarxxx‘);-> ‘bar‘ mysql> SELECT TRIM(TRAILING ‘xyz‘ FROM ‘barxxyz‘);-> ‘barx‘部分内置函数
- 打造百变女郎,PS教学:给衣服添加图案教程来了!
- MySQL教程3 MySQL8操作数据表中记录 13.MySQL多表更新 学习猿地
- MySQL教程-19-数据排序
- mysql:索引的本质详解
- mysql事务的隔离性等级事故
- mysql:索引之二叉树初步理解
- 布局篇 前端教程H5、CSS3怎么让文字内容都垂直居中?弹性布局
- mysql:数据库之删除记录对自动增长的影响
- 法国棍子面包,你做对了吗?详尽教程教您做正宗法棍!
- 怎么用PS做海报啊?