2016-10-31 1 views
1

Это команда, которую я поставил в:Могу ли я создать два атрибута таблицы MySQL всегда одинакового значения?

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

В этой таблице, я хочу атрибуты name и location, чтобы один и то же значение во все времена. Могу ли я сделать это в инструкции создания таблицы? Или мне нужно что-то установить после его создания?

+0

Вы можете использовать значения 'DEFAULT' для этих двух полей – 1000111

+0

Вы имеете в виду, что они не могут быть изменены после их создания? – Strawberry

+0

@ Strawberry nope Я хочу, чтобы один из этих двух был изменен, когда другой изменился. –

ответ

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 
); 

Если вы не предоставляете значений для этих двух полей при вставке, то значение по умолчанию будет сохраняться.

EDIT:

Через 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 колонке, и наоборот.

+0

Все еще кажется как ничтожная идея, хотя – Strawberry

+0

Это единственное решение, которое я могу придумать сделать в одиночку в конце 'MySQL'. Вы можете внести свой вклад в ответ, если хотите. @Strawberry – 1000111

+1

Я бы предложил не« делать это »вообще! – Strawberry