首页 > 试题广场 >

构造一个触发器audit_log

[编程题]构造一个触发器audit_log
  • 热度指数:102970 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
构造一个触发器audit_log,在向employees_test表中插入一条数据的时候,触发插入相关的数据到audit中。
CREATE TABLE employees_test(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
CREATE TABLE audit(
EMP_no INT NOT NULL,
NAME TEXT NOT NULL
);
后台会往employees_test插入一条数据:
INSERT INTO employees_test (ID,NAME,AGE,ADDRESS,SALARY)VALUES (1, 'Paul', 32, 'California', 20000.00 );
然后从audit里面使用查询语句:
select * from audit;
示例1

输入

drop table if exists audit;
drop table if exists employees_test;

CREATE TABLE employees_test(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);
CREATE TABLE audit(
    EMP_no INT NOT NULL,
    NAME TEXT NOT NULL
);

输出

1|Paul

先学语法

create trigger audit_log after insert
on employees_test
for each row
begin
    insert into audit values(new.id,new.name);
end;
发表于 2024-06-05 20:33:24 回复(0)
触发器程序体(begin ... end之间的SQL语句),每条语句必须用分号 ; 结尾
create trigger audit_log
after insert on employees_test
for each row
begin
    insert into audit
    values(new.id, new.`name`);
end;
发表于 2022-09-14 02:07:16 回复(0)
create trigger audit_log after insert on employees_test
for each row
begin
    insert into audit values(NEW.ID,NEW.NAME);
end;
发表于 2022-06-02 15:31:20 回复(0)
看了下和大家一样
create trigger audit_log
after insert on employees_test for each row
begin 
INSERT INTO audit (EMP_no,NAME)
VALUES
( new.id, new.NAME);
end;
发表于 2022-05-31 14:41:35 回复(0)
create  trigger audit_log 
after insert on employees_test
for each row
begin
    insert into audit(EMP_no, NAME) values (new.ID, new.NAME);
end
;
发表于 2022-04-16 16:01:50 回复(0)
发表于 2022-03-25 20:30:15 回复(0)
完全没有耍过这个玩意儿
create trigger audit_log after insert 
on employees_test for each row 
begin 
INSERT INTO audit (EMP_no,NAME) VALUES (1, 'Paul');
end 


发表于 2022-03-12 13:09:17 回复(0)
/*
CREATE TRIGGER trigger_name trigger_time trigger_event
 ON table_name
 FOR EACH ROW
 BEGIN
     
 END;
 */
create trigger audit_log after insert
on employees_test
for each row
begin 
     insert into audit value(
         new.ID
         ,new.NAME
     );
end 
/*
关于old和new关键字,
old:执行前的行数据
new:执行后的行数据
*/

发表于 2021-11-19 15:42:49 回复(0)
create trigger audit_log after insert on employees_test 
for each row insert into audit (emp_no,name)values(new.id,new.name);
发表于 2021-11-17 17:34:31 回复(0)
delimiter $$
create trigger audit_log after insert on employees_test for each row
begin
insert into audit (EMP_no, NAME) values (new.ID, new.NAME);
end$$
delimiter ;
加上delimiter $$就会出错,不知道为什么;我在idea里测试了,没有问题。有没有人知道为什么?
发表于 2021-10-20 21:14:28 回复(0)
create trigger audit_log
after insert on employees_test
for each row
begin
    insert into audit values(new.id,new.name);
end

发表于 2021-09-08 15:22:50 回复(0)
create trigger audit_log
after insert on employees_test
for each row 
begin 
    insert into audit values(new.id,new.name);
end

发表于 2021-09-04 16:33:52 回复(0)
create TRIGGER audit_log
after insert on employees_test
for each ROW
insert into audit 
select id,name from employees_test;
因为是导入的数据都触发进入表格audit,所以触发器程序体也可以写作把相关字段的所有数据均插入
发表于 2021-08-19 17:50:47 回复(0)
CREATE TRIGGER audit_log
AFTER INSERT ON employees_test
FOR EACH ROW
INSERT INTO audit(EMP_no, NAME) VALUES(NEW.ID, NEW.NAME);

发表于 2021-08-16 19:22:06 回复(0)
create trigger `audit_log`
after insert on `employees_test`
for each row
insert into audit values(new.id,new.name);

发表于 2021-08-15 15:53:09 回复(0)
sqlite和mysql兼用:
create trigger audit_log after insert on employees_test 
for each row
begin
insert into audit(emp_no,name) values(NEW.ID,NEW.NAME); 
end;


发表于 2021-08-13 15:21:49 回复(0)
高赞答案不能通过,因为没有FOR EACH ROW
发表于 2021-08-01 20:14:56 回复(0)