создать таблицу со значением по умолчанию, объединяющим два столбца - PullRequest
2 голосов
/ 24 сентября 2010

Можно ли создать таблицу со столбцом, который объединяет два значения столбца? как то так:

создать таблицу test1 ( десятичное число 1 (6,2), десятичное число 2 (6,2), Всего десятичных (6,2) ПО УМОЛЧАНИЮ (число 1 + число 2) );

Ответы [ 3 ]

5 голосов
/ 24 сентября 2010

Да, в 11G. Это называется «виртуальный» столбец. Синтаксис:

create table test1
 ( number1 number(6,2),
   number2 number(6,2),
   total number(6,2) generated always as (number1+number2) );

(В Oracle AFAIK нет типа DECIMAL, поэтому вместо него я использовал NUMBER.)

См. Также: Документация

NB Ключевые слова "всегда генерируемые" необязательны.

Типы выражения, разрешенные после «как», описаны здесь .

0 голосов
/ 24 сентября 2010

Вы можете сделать это, используя триггер:

create table test1
  (number1 decimal(6,2),
   number2 decimal(6,2),
   total decimal(6,2));

CREATE TRIGGER test1_bi
  BEFORE INSERT ON test1
  FOR EACH ROW
BEGIN
  IF :new.total is NULL THEN
    :NEW.TOTAL := :new.number1 + :new.number2;
  END IF;
END test1_bi;

INSERT INTO test1(number1, number2) VALUES(1, 2);

SELECT * FROM test1;

После SELECT вы обнаружите, что TOTAL имеет значение 3, как и ожидалось.

Делитесь и наслаждайтесь.

0 голосов
/ 24 сентября 2010

Вам нужно использовать вычисляемые столбцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...