1. SELECT * FROM `tsys_user`
    2. SELECT * FROM ums_customer
    3. # 查看字段
    4. desc ums_customer
    5. # 触发器
    6. SHOW TRIGGERS
    7. CREATE trigger trigger_name BEFORE|AFTER trigger_EVENT
    8. ON TABLE_NAME FOR EACH ROW trigger_STMT
    9. #参数trigger_name表示要创建的触发器名;
    10. #参数BEFORE和AFTER指定了触发器执行的时间,前者在触发器事件之前执行触发器语句,后者在触发器事件之后执行触发器语句;
    11. #参数trigger_EVENT表示触发事件,即触发器执行条件(触发事件),包含DELETE、INSERT和UPDATE语句;
    12. #参数TABLE_NAME表示触发事件的操作表名;
    13. #参数FOR EACH ROW表示任何一条记录上的操作满足触发事件都会触发该触发器;
    14. #参数trigger_STMT(sql语句)表示激活触发器后被执行的语句。执行语句中如果要引用更新记录中的字段,对于INSERT语句,只有NEW是合法的,表示当前已插入的记录;对于DELETE语句,只有OLD才合法,表示当前删除的记录;而UPDATE语句可以和NEW(更新后)以及OLD(更新前)同时使用。
    15. # 在创建触发器主体时,还可以使用OLD和NEW 来获取 SQL 执行INSERT,UPDATE和DELETE 操作前后的写入数据。
    16. # DELIMITER //:MySQL 默认分隔符是; 但在触发器中,我们使用 // 表示触发器的开始与结束 // 可以替换为 $ 。
    17. desc ums_customer;
    18. # 触发器 1
    19. DROP TRIGGER
    20. IF
    21. EXISTS trigger_user_customer_insert;
    22. DELIMITER //
    23. CREATE TRIGGER trigger_user_customer_insert AFTER INSERT ON tsys_user FOR EACH ROW
    24. INSERT INTO ums_customer (
    25. #id,
    26. user_name,
    27. `name`, sex, job, matrimony, birthday, forbidden
    28. )
    29. VALUES
    30. (
    31. #new.user_id,
    32. new.real_name,
    33. new.real_name,
    34. new.sex,
    35. '企事业单位员工',
    36. new.marriage_state,
    37. new.birthday,
    38. 0
    39. )//
    40. DELIMITER;
    41. # 带定义字段 insert 触发器
    42. DROP TRIGGER
    43. IF
    44. EXISTS trigger_user_customer_insert;
    45. DELIMITER //
    46. CREATE TRIGGER trigger_user_customer_insert AFTER INSERT ON tsys_user FOR EACH ROW
    47. BEGIN
    48. DECLARE
    49. user_id VARCHAR ( 50 );
    50. DECLARE
    51. user_name VARCHAR ( 50 );
    52. DECLARE
    53. `name` VARCHAR ( 50 );
    54. DECLARE
    55. sex INT;
    56. DECLARE
    57. matrimony INT;
    58. DECLARE
    59. birthday datetime;
    60. SET user_id = new.user_id;
    61. SET user_name = new.real_name;
    62. SET `name` = new.real_name;
    63. SET sex = new.sex;
    64. SET matrimony = new.marriage_state;
    65. SET birthday = new.birthday;
    66. INSERT INTO ums_customer ( user_name, `name`, sex, job, matrimony, birthday, forbidden, user_id )
    67. VALUES
    68. ( user_name, `name`, sex, '企事业单位员工', matrimony, birthday, 0 , user_id );
    69. END //
    70. DELIMITER;
    71. # 更新 (正式)
    72. DROP TRIGGER
    73. IF
    74. EXISTS trigger_user_customer_update;
    75. DELIMITER //
    76. CREATE TRIGGER trigger_user_customer_update AFTER UPDATE ON tsys_user FOR EACH ROW
    77. BEGIN
    78. DECLARE
    79. user_name VARCHAR ( 50 );
    80. DECLARE
    81. `name` VARCHAR ( 50 );
    82. DECLARE
    83. sex INT;
    84. DECLARE
    85. matrimony INT;
    86. DECLARE
    87. birthday datetime;
    88. SET user_name = new.real_name;
    89. SET `name` = new.real_name;
    90. SET sex = new.sex;
    91. SET matrimony = new.marriage_state;
    92. SET birthday = new.birthday;
    93. UPDATE ums_customer
    94. SET user_name = user_name,
    95. `name` = user_name,
    96. sex = sex,
    97. matrimony = matrimony,
    98. birthday = birthday
    99. WHERE
    100. user_id = new.user_id;
    101. END //
    102. DELIMITER;
    103. # 更新
    104. DROP TRIGGER IF EXISTS trigger_user_customer_update;
    105. DELIMITER //
    106. CREATE TRIGGER trigger_user_customer_update AFTER UPDATE ON tsys_user FOR EACH ROW
    107. UPDATE ums_customer
    108. SET user_name = NEW.real_name,
    109. `name` = NEW.real_name,
    110. sex = NEW.sex,
    111. matrimony = NEW.marriage_state,
    112. birthday = NEW.birthday
    113. WHERE
    114. id = new.user_id //
    115. DELIMITER;
    116. # 删除 (正式使用)
    117. DROP TRIGGER IF EXISTS trigger_user_customer_delete;
    118. DELIMITER //
    119. CREATE TRIGGER trigger_user_customer_delete AFTER DELETE ON tsys_user FOR EACH ROW
    120. DELETE FROM ums_customer
    121. WHERE
    122. user_id = old.user_id //
    123. DELIMITER;
    124. # 删除
    125. DROP TRIGGER IF EXISTS trigger_user_customer_delete;
    126. DELIMITER //
    127. CREATE TRIGGER trigger_user_customer_delete AFTER DELETE ON tsys_user FOR EACH ROW
    128. UPDATE ums_customer
    129. SET forbidden = 1
    130. WHERE
    131. id = old.user_id //
    132. DELIMITER;

    image.png

    image.png

    参考:https://www.jb51.net/article/186756.htm