Дата и время в Default

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Fed
Сообщения: 17
Зарегистрирован: 13 ноя 2005, 10:39

Дата и время в Default

Сообщение Fed » 24 ноя 2005, 06:21

Напишите, пожалуйста, пример того как вставить в качестве literal дату при объявлении столбца. Чего-то типа этого:

Код: Выделить всё

CREATE TABLE Table1 (
ID INTEGER,
DATE1 DATE DEFAULT DATE)
Меня интересует, что вместо DATE в последней строчке писать, а то в докуме я чего-то не нашел. А время также не получиться? Только триггером или хранимой процедурой надо?

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 24 ноя 2005, 12:16

Встречный вопрос - а что туда будешь писать в триггере или хранимой процедуре?

svalx
Сообщения: 5
Зарегистрирован: 24 ноя 2005, 12:34

Сообщение svalx » 24 ноя 2005, 12:43

CREATE TABLE Table1 (
ID INTEGER,
DATE1 DATE DEFAULT CURRENT_DATE)

Во всех новых записях, если явно не будет задано значение поля DATE1, то ему перед вставкой будет присвоено значение текущей даты.

У меня тоже вопрос в тему:

CREATE TABLE Table1 (
ID INTEGER,
DATE1 DATE DEFAULT CURRENT_DATE+1) - не работает.

Есть ли какая-нибудь возможность задавать в качестве значения по умолчанию для домена или непосредственно для поля таблицы вычисляемые значения (по смыслу как примере CURRENT_DATE+1)?

Fed
Сообщения: 17
Зарегистрирован: 13 ноя 2005, 10:39

Сообщение Fed » 24 ноя 2005, 13:18

Я в принципе так и полагал. svalx, тут я пока искал ответ на форуме, наткнулся - попробуй писать:

Код: Выделить всё

Current_Date, 'tomorrow'
Спасибо. А что со временем?

svalx
Сообщения: 5
Зарегистрирован: 24 ноя 2005, 12:34

Сообщение svalx » 24 ноя 2005, 13:29

Fed писал(а):А что со временем?
В dialect 3 можно пользоваться константами

Код: Выделить всё

CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_DATE
соответственно для полей типа TIME, DATE и TIMESTAMP.

Но меня интересует общий принцип. Например нужна для поля дата по умолчанию равная "Сегодня + 6 месяцев"...

Fed
Сообщения: 17
Зарегистрирован: 13 ноя 2005, 10:39

Сообщение Fed » 24 ноя 2005, 13:33

Да, спасибо. Я как раз про время нашел. А общий принцип... не знаю.

svalx
Сообщения: 5
Зарегистрирован: 24 ноя 2005, 12:34

Сообщение svalx » 24 ноя 2005, 14:01

Скорее всего задать значением по умолчанию для поля произвольную (по отношения к текущей) дату можно только с помощью триггера:
Код работает:

Код: Выделить всё

SET TERM ^ ;
CREATE TRIGGER "Table1_BI" FOR "Table1"
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW."DATE1" IS NULL) THEN
    NEW."DATE1" = current_date + 1;
 END
^
SET TERM ; ^
Думал, что можно проще...

Ответить