Как сделать что-то вроде этого ...Alter таблицы добавить столбец как оператор выбора
alter table customer_schedule add (week_number as (TO_CHAR((SCHEDULE_DATE),'iw'))
В чем SCHEDULE_DATE это один из существующих столбцов в таблице
Как сделать что-то вроде этого ...Alter таблицы добавить столбец как оператор выбора
alter table customer_schedule add (week_number as (TO_CHAR((SCHEDULE_DATE),'iw'))
В чем SCHEDULE_DATE это один из существующих столбцов в таблице
Здесь вы найдете VIRTUAL COLUMN. Если вы находитесь на 11g и выше, вы могли бы, конечно, сделать -
alter table table_name add (column_name [data_type] [generated always] as (column_expression) [virtual]);
В вашем случае, это будет что-то вроде -
alter table customer_schedule add (week_number data_type generated always as (TO_CHAR((SCHEDULE_DATE),'iw') VIRTUAL)
Большое вам спасибо за ваше ценное время и ответ, но его не работает – Kimaya
Вы сделали, чтобы много копировать/вставлять из документации, это должно быть 'alter table customer_schedule add (week_number NUMBER генерируется всегда как (TO_CHAR (SCHEDULE_DATE, 'iw')) VIRTUAL); ' –
@Wernfried, я намеренно оставил параметр data_type для OP, потому что число '03' будет считаться как 3, а не 03. OP не упомянул, что хочет, чтобы это было числовое поле. –
предполагается ключевым слово по умолчанию, чтобы хранить значение когда существует некоторое значение отсутствует, но из-за ограничений, you cannot use a column name
выражение DEFAULT не может содержать ссылки на функции PL/SQL или других столбцов, псевдонимы LEVEL, PRIOR и ROWNUM, или константы даты, которые не указаны полностью.
Я думаю, что триггер ДО НАЧАЛА ВЕРСИЯ/ОБНОВЛЕНИЕ уровня должен делать то, что вы хотите сделать.
Все, что есть в прошлом веке. Виртуальные столбцы были введены в 11g. –
Предполагая, что OP имеет доступ к 11g .. – Sathya
Я попросил OP предоставить информацию о версии. Если OP находится на 11g предыдущих базах данных, триггер будет единственным решением. –
На 9i, вы не можете использовать виртуальных колонок, так что я «d, вероятно, пойти с целью:
create view customer_schedule_view as
select
c.*,
to_char(c.schedule_date, 'iw')) week_number
from
customer_schedule c;
конечно, в ваших формах вам нужно затем, чтобы выбрать с точки зрения, а из таблицы.
Почему вы хотите сохранить производное значение в таблице? –
Я хочу разработать форму, в которой, когда выбран номер недели, он должен заполнить список из другой таблицы. Я сделал то же самое, используя месяц, но теперь я хочу его с номером недели. – Kimaya
Какая ошибка вы столкнулись – Exhausted