MYSQL:一列中的数据依赖于另一列

标签 mysql sql-update

我需要创建一个表,其中包含国家和城市列。

如果我把国家写成“美国”,那么城市一定是“纽约”。如何施加此约束

我试过了,但这也会影响其他行中的数据:

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/

相关文章:

mysql - 字段列表触发器中的未知列

mysql - 查询从表中获取前 2 条和第 3 条记录

mysql - 如何使用断点更新 mysql

mysql - 对于非常小的(4 个字符)值,BIGINT UNSIGNED 值超出范围

Laravel 5 中的 mysql_query

mysql - 如何返回 MySQL 中最后更新记录的 ID?

mysql - 使用内部联接插入记录后更新表

php - 在 php 中,我可以在从 url 获取变量的同时循环更新数据库吗?

php - 在 Doctrine 2 的映射关系中保留选定的实体

mysql - 选择 SUM 并计算每行的百分比