Mysql 在插入之前创建触发器
我正在尝试使用触发器更新已存在的条目。我想检查条目是否存在。如果不存在,请进行更新,然后插入。当我尝试插入新条目时,出现了一个错误:“无法更新存储函数/触发器中的表,因为调用此存储函数/触发器的语句已经使用了它。”Mysql 在插入之前创建触发器,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,我正在尝试使用触发器更新已存在的条目。我想检查条目是否存在。如果不存在,请进行更新,然后插入。当我尝试插入新条目时,出现了一个错误:“无法更新存储函数/触发器中的表,因为调用此存储函数/触发器的语句已经使用了它。” DELIMITER // CREATE TRIGGER check_table_before_insert BEFORE INSERT ON Songs FOR EACH ROW BEGIN IF NEW.PageURL =( SELECT Songs.PageURL
DELIMITER //
CREATE TRIGGER check_table_before_insert BEFORE INSERT ON Songs FOR EACH ROW BEGIN IF NEW.PageURL =(
SELECT
Songs.PageURL
FROM
Songs
WHERE
Songs.PageURL = NEW.PageURL
) THEN
UPDATE
Songs
SET
Songs.Title = NEW.Title,
Songs.Album = NEW.Album,
Songs.Label = NEW.Label,
Songs.Release_Date = NEW.Release_Date,
Songs.PageURL = NEW.PageURL,
Songs.IsSingle = NEW.IsSingle,
Songs.Code = NEW.Code,
Songs.ImageURL = NEW.ImageURL,
Songs.Link_320 = NEW.Link_320,
Songs.Link_128 = NEW.Link_128,
Songs.Link_48 = NEW.Link_48,
Songs.AlbumURL = NEW.AlbumURL
WHERE
Songs.PageURL = NEW.PageURL;
END IF;
END;
// DELIMITER;
这不是触发器的适当用法 如果要对表执行插入或更新操作,请使用以下语法。它已经具备了您要寻找的语义
如果要更新的列相当于整行,则可以使用动词作为插入的替代。请注意,它将在插入新的行之前删除该行,因此替换查询中未包含的任何列都将丢失。无法在触发器中避免此错误。