使用select语句在create table语法中定义默认列值

Fai*_*yed 2 sql t-sql ddl

我正在尝试创建一个表,对于其中一个列,我希望默认值是特定的 - 请参阅下面的代码:

CREATE TABLE dbo.PSTest(
modDate datetime default getdate()
, [Date] datetime default (SELECT CONVERT (DATE, GETDATE()))
);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

Msg 1046, Level 15, State 1, Line 28
Subqueries are not allowed in this context. Only scalar expressions are allowed.
Run Code Online (Sandbox Code Playgroud)

我明白我不能这样做,但有办法解决这个问题吗?

先感谢您

Gor*_*off 5

您不需要子查询:

CREATE TABLE dbo.PSTest(
    modDate datetime default getdate(),
    [Date] datetime default cast(getdate() as date)
);
Run Code Online (Sandbox Code Playgroud)

  • @FaizSaiyed - 然后将其声明为`date`,而不是`datetime`.您已经为它提供了一个具有时间组件的数据类型.它必须设置为*something*. (2认同)