从另一个表更新表并更新日志中的事务

时间:2012-07-30 17:39:09

标签: java mysql

我有一个包含三个表stud_firststud_secondstud_audit的数据库stud_firststud_second具有相同的列名

name,
stud-id,
age,
class
number_of-course_taken

我希望stud_second始终在stud_firs t中插入任何数据,同时stud_audit应保留所复制数据的记录,即学生姓名和日志他们被复制或删除stud_firsstud_second的时间。 stud_audit中的列应该如下所示

name,
time copied 

我想单独使用mysql或将其与java

结合使用

1 个答案:

答案 0 :(得分:0)

不是一个完整的答案,但这可能足以让你开始朝着正确的方向前进......

DELIMTER $$
CREATE TRIGGER stud_first_ar 
AFTER INSERT ON stud_first
FOR EACH ROW
BEGIN
  INSERT INTO stud_second
  (`name`, `stud-id`, `age`,`class`,`number_of-course_taken`) 
  VALUES
  (NEW.`name`,NEW.`stud-id`,NEW.`age`,NEW.`class`,NEW.`number_of-course_taken`);

  INSERT INTO stud_audit (`name`, `time copied`) 
  VALUES (NEW.`name`,UTC_TIMESTAMP());

END$$

如果您不关心时区问题,可以使用NOW()代替UTC_TIMESTAMP()

包含破折号和空格的列名的选择是非标准的...它是允许的,但是当你避免这样做时通常会更容易。

我实际上只有一个审计表,而不是两个独立的审计表。它可以是表的副本,其中包含“action”的附加列(标识更改是由INSERT,UPDATE还是DELETE引起),“actor”(标识导致操作的进程或用户以及UTC时间戳。) / p>

您可能还需要考虑UPDATE和DELETE操作的“审核”触发器,其中您可以获得特殊的“OLD.”记录。

同样,不是一个完整的答案,但这可能足以让你开始朝着正确的方向前进。