Sql Server 查看数据表的某列是否为标识列

1.查询某个表的某列是否为标识列(自增列)

SELECT 
    is_identity
FROM sys.columns
WHERE 
    object_id = object_id('TableName')
    AND name = 'ColumnName'

is_identity为1时,表示该列为标识列,为0是表示该列不是标识列。注意判断当ColumnName不存在时,查询结果为空。

2.允许显式插入标识列的值

        默认情况下,当一列为标识列时,插入数据的SQL无需为该列赋值,当有需要显式插入标识列的值时,需要进行设置。

--允许显式插入标识列
set identity_insert TableName on

--不允许显式插入标识列
set identity_insert TableName off

        注意①:当使用SQL进行显式插入标识列时,SQL语句中需要包含列名单,不能直接只写Values,否则会报错。

仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'TableName'中的标识列指定显式值。

        注意②:设置成允许显式插入标识列后,后续所有插入SQL都需要指定标识列的值,否则插入语句会报错,所以不需要显式插入后,需要及时关闭该功能。

当 IDENTITY_INSERT 设置为 ON 或某个复制用户向 NOT FOR REPLICATION 标识列中插入内容时,
必须为表 'TableName' 中的标识列指定显式值。

        注意③:允许显式插入标识列功能仅当前Connection有效,所以请将开启语句放到插入语句中统一执行。否则新连接仍会报错无法插入。

        注意④:IDENTITY_INSERT默认值为off,且同一时间只有一个表能被设置为on,当另一个表设置为on后,前一个设置为on的表会自动切换至off状态。所以多表的异步操作时要注意这个问题,最好是同步语法。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值