这是我输入的命令:
create table inventory(
idx int primary key,
name varchar(20),
location varchar(20),
quantity int);
在此表中,我希望属性name
和location
始终共享相同的值。我可以在表创建语句中执行此操作吗?或者我必须在创建之后设置一些内容?
答案 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
列中,反之亦然。