为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【问题描述】*:我在使用手动拼接数据到sql脚本文件,但是有的表设置了IDENTITY
列, 于是我给每个表的insert
语句前插入
SET IDENTITY_INSERT TABLE_NAME ON;
但是对于没有IDENTITY
列的表会提示异常,我该如何判断一张表是否存在IDENTITY
列?或者有什么别的解决办法。
也不能寄希望于用户都统一使用或不使用IDENTITY
来建立表的自增列。
如果根据建表的语句判断其中是否包含IDENTITY
,可是可行,但是用户可能会选择仅导出数据。保底方案是无论用户选择 导出数据 或 表结构和数据 我都去获取建表sql,再根据建表sql判断是否包含IDENTITY
,判断是否要在sql脚本中写入
SET IDENTITY_INSERT TABLE_NAME ON;
SELECT DISTINCT ALL_TABLES.TABLE_NAME, ALL_TABLES.OWNER
FROM SYSCOLUMNS,ALL_TABLES,SYSOBJECTS
WHERE SYSCOLUMNS.INFO2 & 0x01 = 0x01
AND SYSCOLUMNS.ID = SYSOBJECTS.ID
AND SYSOBJECTS.NAME = ALL_TABLES.TABLE_NAME
-- 下面的用户名改成你的用户名
AND ALL_TABLES.OWNER = '用户名';
sysjobjects视图有个INFO6字段可以查一下试试。