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

时间:2016-10-31 06:16:12

标签: mysql attributes

这是我输入的命令:

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

在此表中,我希望属性namelocation始终共享相同的值。我可以在表创建语句中执行此操作吗?或者我必须在创建之后设置一些内容?

1 个答案:

答案 0 :(得分:1)

您可以为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列中,反之亦然。