Можно ли установить значение по умолчанию в столбце SQL, которое будет состоять из других столбцов? Например, в приведенной ниже таблице возможно ли установить EndDate по умолчанию на StartDate + NoOfDays? Поэтому при вставке мне просто нужно сделать INSERT INTO xxx VALUES StartDate NoOfDays.
Вы можете использовать сгенерированный столбец :
create table mytable (
startdate datetime not null,
noofdays int not null,
enddate datetime as (startdate + interval noofdays day)
);
Затем вы должны вставить следующее:
insert into mytable (startdate, noofdays) values(now(), 3);
Что генерирует:
startdate | noofdays | enddate :------------------ | -------: | :------------------ 2020-12-12 01:28:27 | 3 | 2020-12-15 01:28:27
Обратите внимание, что это не совсем то же самое, что и по умолчанию, о котором вы упомянули в вопросе. Значение по умолчанию применяется к обычному столбцу и используется только в том случае, если в insert
время не указано значение. С другой стороны, сгенерированный столбец не может быть записан напрямую.
Редактировать
В SQL-сервере:
create table mytable (
startdate datetime not null,
noofdays int not null,
enddate as dateadd(day, noofdays, startdate)
)
@Дензил. . . Просто обратите внимание, что это не совсем так, как интерпретируется ваш вопрос. Это определяет «виртуальный» столбец, который всегда имеет вычисленное значение. Это не значение по умолчанию, а просто значение столбца. Кажется, это то, что вы хотите, но это не то, о чем спрашивает вопрос. «По умолчанию» означает, что вы можете использовать
update
, чтобы изменить значение позже.