Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 满足条件时删除触发器_Mysql_Triggers_Sql Delete - Fatal编程技术网

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,则记录将被自动删除