Maison  >  Questions et réponses  >  le corps du texte

Moyen de maintenir l'intégrité entre deux colonnes dans la table MySQL

J'ai une table avec des colonnes nommées 主键普通列。我想要保持这两列的完整性.

Supposons que j'ai une table utilisateur et deux données. J'espère en 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      |

Si je mets à jour l'identifiant (clé primaire), il n'a pas d'intégrité.

update USER SET id='master' WHERE id='system';

结果如下

| id       | create_user |
| -------- | ------------|
| master   | system      |
| user01   | system      |

Mais Je veux implémenter cela sur le formulaire. Est-il possible? Je ne veux pas de requêtes de mise à jour supplémentaires.

| id       | create_user |
| -------- | ------------|
| master   | master      |
| user01   | master      |

P粉462328904P粉462328904403 Il y a quelques jours450

répondre à tous(1)je répondrai

  • P粉364129744

    P粉3641297442023-09-13 12:04:12

    Vous pouvez mettre à jour n'importe quel nombre de colonnes et d'instructions de cas d'utilisation pour décider sur quoi vous voulez qu'elles soient définies

    如果存在表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 秒)

    répondre
    0
  • Annulerrépondre