我有一个表格上的列,分别是主键和普通列。我想要保持这两列的完整性。
假设我有一个用户表和两个数据。我希望在id列和create_user列之间保持完整性
CREATE TABLE USER (
id varchar(10) not null,
create_user varchar(10) not null,
PRIMARY KEY (id)
);
insert into USER (id,create_user) values ('system','system');
insert into USER (id,create_user) values ('user01','system');
结果如下
| id | create_user |
| -------- | ------------|
| system | system |
| user01 | system |
如果我更新id(主键),它就不具备完整性。
update USER SET id='master' WHERE id='system'; 结果如下 | id | create_user | | -------- | ------------| | master | system | | user01 | system |
但是我希望在表格上实现这个。这可能吗?我不想要额外的更新查询。
| id | create_user | | -------- | ------------| | master | master | | user01 | master |
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
您可以更新任意数量的列,并使用case语句来决定要将它们设置为什么
如果存在表t,则删除表t; CREATE TABLE t ( id varchar(10) not null, create_user varchar(10) not null, PRIMARY KEY (id) ); 向t表插入数据 (id,create_user) values ('system','system'); 向t表插入数据 (id,create_user) values ('user01','system'); 更新t表 SET id = case when id= 'system' then 'master' else id end , create_user = case when create_user = 'system' then 'master' else create_user end where id = 'system' or create_user = 'system'; 从t表中查询数据; +--------+-------------+ | id | create_user | +--------+-------------+ | master | master | | user01 | master | +--------+-------------+ 共有2行数据 (0.001 秒)