执行ALTER TABLE添加IDENTITY NOT NULL列时报错,请求技术帮助
解决添加IDENTITY NOT NULL列的报错问题
错误原因
当表中已有数据时,直接执行ALTER TABLE informations ADD id INTEGER IDENTITY NOT NULL;会报错,因为数据库无法为现有行自动生成IDENTITY值,导致这些行的id列被设为NULL,违反了NOT NULL约束。而设置DEFAULT值虽然能成功添加列,但DEFAULT是固定值,无法实现自增需求。
解决方案
分两步操作即可实现需求:
- 先添加允许NULL的IDENTITY列,此时数据库会自动为所有现有行生成唯一的自增值:
ALTER TABLE informations ADD id INTEGER IDENTITY NULL;
- 将该列修改为NOT NULL:
ALTER TABLE informations ALTER COLUMN id INTEGER NOT NULL;
这样既保证了id列的自增特性,又满足了NOT NULL的约束要求。
内容的提问来源于stack exchange,提问作者Moneeb
相关产品推荐
相关产品推荐

