簡體   English   中英

滿足條件時刪除觸發器

[英]delete trigger when condition is met

我知道這是一個簡單的問題,但我找不到任何答案。

那是我的桌子:

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 |

問題是:如果要刪除城市,人口總數必須為275,000或更少。

我試過了

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 ;

但這不起作用。 有誰能夠幫助我?

我會這樣:

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;
/

當somone嘗試刪除人口> 275,000的記錄並向其返回明確的解釋(錯誤消息)時,此觸發器將引發錯誤。
如果人口少於或等於275,000,則記錄將被靜默刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM