Mysql 触发已删除的表
代码表示删除的表不存在:Mysql 触发已删除的表,mysql,database,Mysql,Database,代码表示删除的表不存在: create database trigger_test; use trigger_test; CREATE TABLE STUDENTS(STUDENT_ID INT(25) PRIMARY KEY NOT NULL, FIRST_NAME VARCHAR(50) NOT NULL, LAST_NAME VARCHAR(50) NOT NULL, CONTACT_NUMBER INT(35), ADDRESS VARCHAR(50) NOT NULL, ZIP_C
create database trigger_test;
use trigger_test;
CREATE TABLE STUDENTS(STUDENT_ID INT(25) PRIMARY KEY NOT NULL, FIRST_NAME VARCHAR(50) NOT NULL, LAST_NAME VARCHAR(50) NOT NULL, CONTACT_NUMBER INT(35),
ADDRESS VARCHAR(50) NOT NULL, ZIP_CODE_ID INT(25) NOT NULL, DEPARTMENT_ID INT(25) NOT NULL);
CREATE TABLE STUDENTS_BACKUP(STUDENT_ID INT(25) PRIMARY KEY NOT NULL, FIRST_NAME VARCHAR(50) NOT NULL, LAST_NAME VARCHAR(50) NOT NULL, CONTACT_NUMBER INT(35),
ADDRESS VARCHAR(50) NOT NULL, ZIP_CODE_ID INT(25) NOT NULL, DEPARTMENT_ID INT(25) NOT NULL);
INSERT INTO STUDENTS (Student_ID,FIRST_NAME,LAST_NAME,CONTACT_NUMBER,ADDRESS,ZIP_CODE_ID,DEPARTMENT_ID)
VALUES(090322,'MOHSIN','ALVI',5197690,'HOUSE 385 STREET 13 SHAHZAD TOWN',10,0900);
INSERT INTO STUDENTS (Student_ID,FIRST_NAME,LAST_NAME,CONTACT_NUMBER,ADDRESS,ZIP_CODE_ID,DEPARTMENT_ID)
VALUES(090329,'HAFIZ','ATA',3969839,'HOUSE 15 STREET 15 JOHAR TOWN',2,0900);
INSERT INTO STUDENTS (Student_ID,FIRST_NAME,LAST_NAME,CONTACT_NUMBER,ADDRESS,ZIP_CODE_ID,DEPARTMENT_ID)
VALUES(100258,'ABDUL','QADEER',5157869,'HOUSE 38 STREET 03 GULSHAN ABAD',2,1000);
INSERT INTO STUDENTS (Student_ID,FIRST_NAME,LAST_NAME,CONTACT_NUMBER,ADDRESS,ZIP_CODE_ID,DEPARTMENT_ID)
VALUES(100239,'NASEEM','GULZAR',56989745,'HOUSE 3 STREET 33 QASIMABAD',8,1000);
INSERT INTO STUDENTS (Student_ID,FIRST_NAME,LAST_NAME,ADDRESS,ZIP_CODE_ID,DEPARTMENT_ID)
VALUES(110369,'FAHEEM','AFFANDI','HOUSE 336 STREET 15 SHAHZAD TOWN',10,1100);
INSERT INTO STUDENTS (Student_ID,FIRST_NAME,LAST_NAME,CONTACT_NUMBER,ADDRESS,ZIP_CODE_ID,DEPARTMENT_ID)
VALUES(110879,'QASIM','SARFARAZ',9635247,'HOUSE 69 STREET 44 JUNAIDABAD',9,1100);
INSERT INTO STUDENTS (Student_ID,FIRST_NAME,LAST_NAME,CONTACT_NUMBER,ADDRESS,ZIP_CODE_ID,DEPARTMENT_ID)
VALUES(090222,'TALHA ','SALAM',5647892,'HOUSE 58 STREET 69 F-8/4',3,0900);
INSERT INTO STUDENTS (Student_ID,FIRST_NAME,LAST_NAME,ADDRESS,ZIP_CODE_ID,DEPARTMENT_ID)
VALUES(100369,'FAHAD','ALI','HOUSE 89 STREET 06 MOHRA NOOR',3,1000);
INSERT INTO STUDENTS (Student_ID,FIRST_NAME,LAST_NAME,CONTACT_NUMBER,ADDRESS,ZIP_CODE_ID,DEPARTMENT_ID)
VALUES(110888,'QALEEM','KHAN',5858969,'HOUSE 05 STREET 03 MAJAZI TOWN',5,1100);
INSERT INTO STUDENTS (Student_ID,FIRST_NAME,LAST_NAME,CONTACT_NUMBER,ADDRESS,ZIP_CODE_ID,DEPARTMENT_ID)
VALUES(125878,'JAVAID','AZEEM',8521473,'HOUSE 20 STREET 20 MALIK PLAZA',5,1200);
INSERT INTO STUDENTS (Student_ID,FIRST_NAME,LAST_NAME,CONTACT_NUMBER,ADDRESS,ZIP_CODE_ID,DEPARTMENT_ID)
VALUES(127777,'MUJAHID','BILAL',5874561,'HOUSE 15 STREET 396 TARLAI',6,1200);
DELIMITER $$
CREATE TRIGGER `DELETED_BACKUP_TRIG` AFTER DELETE ON `STUDENTS` FOR EACH ROW
begin
INSERT INTO STUDENTS_BACKUP(STUDENT_ID,FIRST_NAME,LAST_NAME,CONTACT_NUMBER,ADDRESS,ZIP_CODE_ID,DEPARTMENT_ID)
SELECT (STUDENT_ID,FIRST_NAME,LAST_NAME,CONTACT_NUMBER,ADDRESS,ZIP_CODE_ID,DEPARTMENT_ID) FROM DELETED;
END $$
尝试以下方法。关注
旧版本。
你很接近
drop trigger if exists `DELETED_BACKUP_TRIG`; -- added for the heck of it
DELIMITER $$
CREATE TRIGGER `DELETED_BACKUP_TRIG` AFTER DELETE ON `STUDENTS` FOR EACH ROW
begin
INSERT INTO STUDENTS_BACKUP(STUDENT_ID,FIRST_NAME,LAST_NAME,CONTACT_NUMBER,ADDRESS,ZIP_CODE_ID,DEPARTMENT_ID)
values (OLD.STUDENT_ID,OLD.FIRST_NAME,OLD.LAST_NAME,OLD.CONTACT_NUMBER,OLD.ADDRESS,OLD.ZIP_CODE_ID,OLD.DEPARTMENT_ID);
END $$
测验
因此,不存在“从已删除的代码中删除”这样的事情
请参阅Mysql手册页面,了解错误消息说明一切-您的触发器代码包含该语句
SELECT (STUDENT_ID, FIRST_NAME, LAST_NAME, CONTACT_NUMBER,
ADDRESS, ZIP_CODE_ID, DEPARTMENT_ID) FROM DELETED
而且您没有名为“已删除的表”
我想请你阅读有关的文件。简短的版本是使用伪表名OLD
引用已删除的记录。你的触发码应该是
DELIMITER $$
CREATE TRIGGER deleted_backup_trig
AFTER DELETE ON students
FOR EACH ROW
BEGIN
INSERT INTO students_backup (STUDENT_ID, FIRST_NAME, LAST_NAME, CONTACT_NUMBER, ADDRESS,ZIP_CODE_ID, DEPARTMENT_ID)
VALUES (OLD.STUDENT_ID, OLD.FIRST_NAME, OLD.LAST_NAME, OLD.CONTACT_NUMBER, OLD.ADDRESS, OLD.ZIP_CODE_ID, OLD.DEPARTMENT_ID);
END $$
MYSQL工作台6.0 CE
DELIMITER $$
CREATE TRIGGER deleted_backup_trig
AFTER DELETE ON students
FOR EACH ROW
BEGIN
INSERT INTO students_backup (STUDENT_ID, FIRST_NAME, LAST_NAME, CONTACT_NUMBER, ADDRESS,ZIP_CODE_ID, DEPARTMENT_ID)
VALUES (OLD.STUDENT_ID, OLD.FIRST_NAME, OLD.LAST_NAME, OLD.CONTACT_NUMBER, OLD.ADDRESS, OLD.ZIP_CODE_ID, OLD.DEPARTMENT_ID);
END $$