Установить значение по умолчанию для даты и времени для всей базы данных - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь найти способ изменить значение по умолчанию для столбцов datetime для всех таблиц в SQL Server.В настоящее время любые новые столбцы типа datetime, которые не допускают nulls, имеют значение по умолчанию 1901/01/01 00:00:00.Я хотел бы изменить это значение на 0001/01/01 00:00:00, чтобы оно соответствовало значению DateTime по умолчанию в Visual Studio.

Я знаю, что могу сделать это для столбца за столбцом через интерфейс или с помощью:

ALTER TABLE YourTable 
    ADD CONSTRAINT DF_YourTable DEFAULT 'SOMEDATE' FOR YourColumn

Но это делается после создания таблицы и является неудобством для поддержания в работе.Я пытаюсь найти способ установить его так, чтобы любые новые таблицы «унаследовали» это от некоторого более высокого уровня, я предполагаю настройки базы данных.

Что-то вроде:

 ALTER DATABASE YourDB SET DEFAULT 'SOMEDATE' FOR TYPE DATETIME

Кто-нибудь знает, как этого добиться?

1 Ответ

0 голосов
/ 07 февраля 2019

Я не думаю, что вы можете сделать это глобально, используя одну команду.

Одно из предложений - создать пользовательский тип данных из DATETIME2, как показано ниже.

1- Создать по умолчанию Сначала необходимо создать тип по умолчанию, как показано ниже.

CREATE DEFAULT Default_DT
AS '0001/01/01 00:00:00'

2- Создать пользовательский тип данных После создания значения по умолчанию необходимо создать свойПользовательский тип данных от DATETIME2, как показано ниже.

CREATE TYPE [dbo].[DateTimeD] FROM [datetime2](7) NOT NULL

3 - Bind Default Вам необходимо сопоставить тип по умолчанию с вашим пользовательским типом данных, например следующим.

EXEC sys.sp_bindefault @defname=N'[dbo].[Default_DT]', @objname=N'[dbo].[DateTimeD]'

Пример :

CREATE TABLE TEST(DtColumn [DateTimeD], ID INT);
insert into TEST(id) select 1
SELECT * FROM TEST

Выход:

DtColumn                         ID
0001-01-01 00:00:00.0000000       1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...