我需要创建一个表,其中包含国家和城市列。
如果我把国家写成“美国”,那么城市一定是“纽约”。如何施加此约束?
我试过了,但这也会影响其他行中的数据:
UPDATE table1 SET city = IF(country = "USA", 'New York', '');
此外,如果可能,应在创建表时添加约束。
最佳答案
您可以像这样处理表定义。
CREATE TABLE table_name
(
country varchar(30),
state varchar(30),
CONSTRAINT check_state
CHECK ( state = CASE WHEN country ='usa' THEN 'new york' ELSE '' END )
);
或者您可以在创建表后使用 ADD CONSTRAINT
添加约束。
根据@Tim 的评论,添加触发器代码以实现相同的目的
DELIMITER |
CREATE TRIGGER `update_state`
AFTER INSERT ON `table_name` FOR EACH ROW
BEGIN
SET status = CASE WHEN new.country= 'usa' THEN 'New York' else ''
END;
DELIMITER ;
关于MYSQL:一列中的数据依赖于另一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46292045/