我可以使MySQL表的两个属性始终具有相同的值吗?



这是我输入的命令:

create table inventory(
    idx int primary key,
    name varchar(20),
    location varchar(20),
    quantity int);

在这个表中,我希望属性namelocation在任何时候都共享相同的值。我可以在表创建语句中这样做吗?还是我必须在创建后再进行设置?

您可以在create table statement中为这两个字段设置默认值。

CREATE TABLE inventory (
    idx INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR (20) NOT NULL DEFAULT 'DEFAULT VALUE SET',
    location VARCHAR (20) NOT NULL DEFAULT 'DEFAULT VALUE SET',
    quantity INT
);

如果在插入时没有为这两个字段提供任何值,则默认值将保持不变。

编辑:

通过before update on trigger可以实现这一点。

DROP TRIGGER IF EXISTS `inventory_trigger`;

DELIMITER //
    CREATE TRIGGER inventory_trigger BEFORE UPDATE ON inventory FOR EACH ROW
  BEGIN 
        IF (NEW.name <> OLD.name ) THEN
            SET NEW.location = NEW.name ;
        END IF;
        IF (NEW.location <> OLD.location ) THEN
            SET NEW.name = NEW.location ;
        END IF;
  END//

如果location字段发生了变化,那么这个变化也会反映在name列中,反之亦然。

最新更新