表达式不能与默认约束一起使用。在 azure synapse sql 中仅指定默认约束的常量

Posted

技术标签:

【中文标题】表达式不能与默认约束一起使用。在 azure synapse sql 中仅指定默认约束的常量【英文标题】:An expression cannot be used with default constraints. Specify only constants for default constraints in azure synapse sql 【发布时间】:2021-11-22 02:20:19 【问题描述】:

我想在 AZURE SYNAPSE SQL 中使用 CREATE TABLE 添加默认约束,但我收到了以下错误消息。也在alter语句中尝试过,但没有运气。我尝试了多种方法,但没有运气。你能帮我解决一下吗。

【问题讨论】:

如错误消息所述,不能在 Azure Synapse 中使用表达式作为默认约束。您只能使用文字值和常量。 您能提出任何解决方案吗?? 【参考方案1】:

根据the documentation 表达式(以及GETDATE() 之类的函数)不能与默认值一起使用:

注意在 Azure Synapse Analytics 中,只有常量可以用于 默认约束。表达式不能与默认值一起使用 约束。

解决方案是将列指定为NOT NULL,并确保在将数据插入表时提供日期,例如:

INSERT INTO yourTable ( someId, yourDateColumn )
SELECT someId, GETDATE()
FROM someTable;

另一种方法是使用CREATE TABLE AS (CTAS) 并在那里指定列值,例如:

CREATE TABLE yourTargetTable
WITH (
    DISTRIBUTION = ROUND_ROBIN,
    CLUSTERED COLUMNSTORE INDEX
)
AS 
SELECT someId, GETDATE() AS loadDate
FROM stagingTable;

【讨论】:

以上是关于表达式不能与默认约束一起使用。在 azure synapse sql 中仅指定默认约束的常量的主要内容,如果未能解决你的问题,请参考以下文章

无法访问 Azure 上的 OpenId UserInfo 端点(AADSTS90010:JWT 令牌不能与 UserInfo 端点一起使用)

MySQL约束

10约束

错误“不能将 'new' 与类型缺少调用或构造签名的表达式一起使用。”导入 Esri 类型时

TS2351:不能将“new”与类型缺少调用或构造签名的表达式一起使用。角度 8

带有本地护照的 TypeScript:不能将“new”与类型缺少调用或构造签名的表达式一起使用