表达式不能与默认约束一起使用。在 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 端点一起使用)
错误“不能将 'new' 与类型缺少调用或构造签名的表达式一起使用。”导入 Esri 类型时