SQL Server中新增固定值列并同语句查询报错求助
解决SQL添加列时的“列名重复”错误
你的问题根源很明确:PMEBUILDING表中已经存在名为TABLEID的列,所以执行ALTER TABLE ... ADD TABLEID时,数据库会触发列名重复的报错(Msg 2705)。下面分步骤帮你解决:
第一步:验证列是否存在
先执行这条语句确认TABLEID列的存在状态:
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'PMEBUILDING' AND COLUMN_NAME = 'TABLEID'
如果返回结果,说明该列确实已经在表中了。
分场景处理问题
场景1:只是想查询现有TABLEID列
既然列已经存在,你不需要再执行ALTER TABLE语句,直接查询即可:
SELECT OBJECTID, BUILDINGID, RECID, TABLEID FROM PMEBUILDING
如果需要把现有TABLEID列的所有值统一设置为40111,可以先更新再查询:
UPDATE PMEBUILDING SET TABLEID = 40111; SELECT OBJECTID, BUILDINGID, RECID, TABLEID FROM PMEBUILDING;
场景2:确实需要新增一个固定值为40111的列
如果是想新增一个全新的列(而非已有的TABLEID),换一个不重复的列名即可,同时注意约束名不要重复(如果之前用过test这个约束名,换个新的标识):
ALTER TABLE PMEBUILDING ADD NEW_TABLEID int NOT NULL CONSTRAINT test_tableid_default DEFAULT 40111 WITH VALUES; SELECT OBJECTID, BUILDINGID, RECID, NEW_TABLEID FROM PMEBUILDING;
小提醒
如果你的SQL环境要求语句必须用分号分隔,记得在每条语句末尾加上分号,避免语法解析异常。
内容的提问来源于stack exchange,提问作者titatovenaar
相关产品推荐
相关产品推荐

