我试图找到一种方法,可以更改SQL Server中所有表的datetime
列的默认值。当前,任何不允许datetime
的{{1}}类型的新列的默认值为nulls
。我想将此值更改为1901/01/01 00:00:00
以匹配Visual Studio中的默认0001/01/01 00:00:00
值。
我知道我可以通过界面或使用以下命令逐列进行此操作:
DateTime
但这是在创建表后 完成的,并且在生产中难以维护。我正在尝试设置一种方法来设置它,以便任何 new 表都可以从更高的级别“继承”此参数,我假设是数据库设置。
类似的东西:
ALTER TABLE YourTable
ADD CONSTRAINT DF_YourTable DEFAULT 'SOMEDATE' FOR YourColumn
有人知道实现此目标的方法吗?
答案 0 :(得分:2)
我不认为您可以使用单个命令在全球范围内做到这一点。
一种建议是像下面这样从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-绑定默认值,您需要将“默认值”类型映射到用户定义的数据类型,如下所示。
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