suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Möglichkeit, die Integrität zwischen zwei Spalten in der MySQL-Tabelle aufrechtzuerhalten

Ich habe eine Tabelle mit Spalten namens 主键普通列。我想要保持这两列的完整性.

Angenommen, ich habe eine Benutzertabelle und zwei Daten. Ich hoffe auf 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      |

Wenn ich die ID (Primärschlüssel) aktualisiere, hat sie keine Integrität.

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

结果如下

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

Aber Ich möchte das auf dem Formular umsetzen. Ist es möglich? Ich möchte keine zusätzlichen Update-Abfragen.

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

P粉462328904P粉462328904446 Tage vor488

Antworte allen(1)Ich werde antworten

  • P粉364129744

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

    您可以更新任意数量的列,并使用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 秒)

    Antwort
    0
  • StornierenAntwort