getDate()指定用于字段默认值,但当我传递null时没有生效



给定tsql

insert into Tasks
select null as userid, 'Test Task 100' as Name, '' as Description, null as DateStarted, null as DateCompleted, null as DateModified

DateStarted字段具有(getDate(((的默认值,但是当我执行前一个TSQL时,它仍然为null。有任何想法吗?

如果省略了列名,则服务器将使用默认值。

如果您必须提供列名,例如来自ORM或其他任何内容,则可以使用关键字

默认

参考:插入(Transact-SQL(

默认 对于列。如果列不存在默认值 列允许null值,插入空值。用于定义的列 时间戳数据类型,下一个时间戳值将插入。默认 对于身份列无效。

第一个语句将允许服务器使用默认值(通过省略Datestartarted列(。顺便说一句,您应该标准化列名称的情况,理想情况下,请停止使用保留单词作为列名称。维护人员会看到"用户ID"," [name]"等随机组合。

INSERT INTO
    Tasks
    (
    userid,
    , [Name]
    , [Description]
    , DateCompleted
    , DateModified
    )
VALUES
    (
    NULL --userid
    , 'Test Task 100' --[Name]
    , '' --[Description]
    , NULL --DateCompleted
    , NULL --DateModified
    )

下一个语句将采用DEFAULT关键字,如果您要明确或出于某种原因需要包含列的框架。

INSERT INTO
    Tasks
    (
    userid,
    , [Name]
    , [Description]
    , DateStarted
    , DateCompleted
    , DateModified
    )
VALUES
    (
    NULL --userid
    , 'Test Task 100' --[Name]
    , '' --[Description]
    , DEFAULT --DateStarted
    , NULL --DateCompleted
    , NULL --DateModified
    )

最新更新