sql-server - SQL Server 表不使用默认值

标签 sql-server tsql

我正在使用 SSIS 包填充表格。

这个想法是,每当包上传到表中时,它都会使用 getdate() 为值添加时间戳。

当我打开它时,我的 DDL 看起来像这样:

CREATE TABLE [REPORTING].[post_ssis_table_1](
    [validation_key] [int] IDENTITY(1,1) NOT NULL,
    [ssis_ran_date] [datetime] NULL,
    [server_name] [varchar](255) NULL,
    [data_base] [varchar](255) NULL,
--A bunch of other irrelevant columns
    [success_status] [varchar](255) NULL,
    [success_criteria] [varchar](255) NULL,
PRIMARY KEY CLUSTERED 
(
    [validation_key] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [REPORTING].[post_ssis_tbl_1] ADD  DEFAULT (getdate()) FOR [ssis_ran_date]
GO

注意:我没有键入 alter 语句,这就是我打开 DDL 时的字面意思。

为什么当我插入行时 [ssis_ran_date] 的默认值没有填充?它实际上只是保持为空。

最佳答案

如果您的 INSERT 语句为具有默认值的列指定 NULL,则将插入 NULL。

只有在 INSERT 中根本没有指定该列时才会使用默认值。

关于sql-server - SQL Server 表不使用默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54428890/

相关文章:

sql-server - 将文本安全转换为 XML

sql-server - 设置 NOEXEC ON 仍然执行 "USE"语句

sql - 邮政编码使用 10 位字符的约束检查

sql-server - 将 SQLite 数据库迁移到 Microsoft SQL Server

sql-server - 连接 2 个表时排除输出中重复列的 T-SQL 语法是什么?

sql-server - SQL Server 用户最佳实践

sql-server - 对于 XML 路径 ('' ) : Escaping "special" characters

sql - 等待数据库引擎恢复句柄失败。检查 SQL Server 错误日志以了解潜在原因

sql-server - 在经典ASP页面调用存储过程

sql - 使用数据透视但不聚合将垂直数据转换为水平数据?