Mysql 满足条件时删除触发器
我知道这是一个简单的问题,但我在任何地方都找不到答案 那是我的桌子:Mysql 满足条件时删除触发器,mysql,triggers,sql-delete,Mysql,Triggers,Sql Delete,我知道这是一个简单的问题,但我在任何地方都找不到答案 那是我的桌子: city | CREATE TABLE `city` ( `ID` int(11) NOT NULL, `Name` char(35) NOT NULL DEFAULT '', `CountryCode` char(3) NOT NULL DEFAULT '', `District` char(20) NOT NULL DEFAULT '', `Population` int(11) NOT NULL D
city | CREATE TABLE `city` (
`ID` int(11) NOT NULL,
`Name` char(35) NOT NULL DEFAULT '',
`CountryCode` char(3) NOT NULL DEFAULT '',
`District` char(20) NOT NULL DEFAULT '',
`Population` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `FKcode99` (`CountryCode`),
CONSTRAINT `FKcode99` FOREIGN KEY (`CountryCode`) REFERENCES `country` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
问题是:如果要删除一个城市,人口必须为275000或更少。
我试过了
ALTER TABLE `world`.`city`
RENAME TO `world`.`DeleteCity` ;
USE `world`;
DELIMITER $$
DROP TRIGGER IF EXISTS world.DeleteCity_ADEL$$
USE `world`$$
CREATE TRIGGER `DeleteCity_ADEL` AFTER DELETE ON `DeleteCity` FOR EACH ROW
IF (OLD.population <= 275000) THEN
DELETE FROM city WHERE NEW.name=OLD.name;
END IF;
$$
DELIMITER ;
ALTER表'world'。'city'
重命名为“世界”。“删除城市”;
使用“world”;
分隔符$$
如果存在world.DeleteCity\u ADEL,则触发$$
使用“世界”`$$
为每行的“DeleteCity”上删除后创建触发器“DeleteCity\u ADEL”
如果(OLD.population我会这样做:
CREATE TRIGGER `DeleteCity_ADEL` BEFORE DELETE ON `DeleteCity` FOR EACH ROW
IF (OLD.population > 275000) THEN
SIGNAL SQLSTATE '45123'
SET MESSAGE_TEXT = 'If you want to delete a city, the population must be 275,000 or less.';
END IF;
/
当某人试图删除人口>275000的记录时,此触发器会引发一个错误,并向他返回一条清晰的解释(错误消息)。
如果填充小于或等于275000,则记录将被自动删除