PostgreSQL中为表字段添加默认约束报错,求正确实现方法
正确为PostgreSQL表字段添加带命名的默认约束的方法
嘿,你这是把SQL Server的语法用到PostgreSQL上啦,两种数据库的默认约束语法不一样,所以才会报语法错误。我给你两种靠谱的实现方式:
方式1:直接设置字段默认值(自动生成约束名)
如果不需要特意给约束命名,用这个最简洁:
ALTER TABLE Alerts ALTER COLUMN bIsActive SET DEFAULT 1;
方式2:显式命名默认约束
如果你想保留类似DF_Alerts_bIsActive这样的自定义约束名,PostgreSQL的正确语法是这样的:
ALTER TABLE Alerts ADD CONSTRAINT DF_Alerts_bIsActive DEFAULT 1 FOR bIsActive;
错误原因说明
你原来写的ALTER TABLE Alerts ADD CONSTRAINT DF_Alerts_bIsActive SET DEFAULT ((1)) FOR bIsActive;是SQL Server专属的语法,PostgreSQL不识别ADD CONSTRAINT后面跟SET DEFAULT的写法,这就是报错的根源啦。
内容的提问来源于stack exchange,提问作者Adynh




