sql 表有没有自增列,插入自增列值

创建一个表

create table demoTb
(
	ID int identity(1,1) primary key,
	name varchar(30)
)

  查看有没有自增列  有就返回YES

IF ((SELECT OBJECTPROPERTY( OBJECT_ID(N'demoTb'), 'TableHasIdentity')) = 1)
    PRINT 'Yes'
ELSE
    PRINT 'No'

  如果想插入自增列的值就

declare @tableName varchar(250)
declare @sql nvarchar(1000)
select @tableName = 'demoTb'
select @sql ='SET IDENTITY_INSERT  '+@tableName+' ON' +char(13)+'insert into demoTb(id,name) values(2,''wu'')'
print @sql
exec sp_executesql  @sql
insert into demoTb(id,name) values(1,'wu')
select  * from demoTb

  

时间: 2024-09-25 15:04:52

sql 表有没有自增列,插入自增列值的相关文章

当sql表中增加一个字段后(没给默认值),怎么才能不让程序出错

问题描述 当sql表中增加一个字段后(没给默认值),怎么才能不让程序出错,在程序中应该怎么修改,,修改时不涉及增加的那个字段... 解决方案 解决方案二:新增字段允许为null,所有用到该表的地方都显示指定字段解决方案三:引用楼主qq_20881211的回复: 当sql表中增加一个字段后(没给默认值),怎么才能不让程序出错,在程序中应该怎么修改,,修改时不涉及增加的那个字段... 删除这个字段,就不会出错了.--更好的办法,是与时俱进.让懂编程开发的人来修改程序测试出来的bug,然后别的人就擎等

SQL 2005使用OUTPUT子句捕获数据插入时的标识值

在insert语句或者delete语句执行后,SQL Server只返回受影响的记录行的总数,如果我们想知道到底所插入/所删除的记录的具体信息的话,这就有点复杂了.在SQL Server 2005之前的版本中,如果希望从已插入和已删除的虚拟表中捕获数据,我们只能通过触发器来实现.在SQL Server 2005中,我们可以利用OUTPUT子句来实现这个功能.我们可以在insert ... SELECT语句使用OUTPUT子句,捕获所有插入的标识值.以前这需要某种类型的循环或暂时改变目标表才能实现

MySQL自增列插入0值的解决方案_Mysql

在将数据库从MSSQL迁移到MySQL的过程中,基于业务逻辑的要求,需要在MySQL的自增列插入0值.在MSSQL中是这样完成的: 复制代码 代码如下: string sql;sql = " set identity_insert dbo.AppUsers on " + " insert dbo.AppUsers (Id, IsLocked, IsMustChangeLocalPassword, IsAvailable, Name, Sequence, CreatedBy,

sql表修改语句

1.添加数据 格式如图1: 说明: column_list列出要添加数据的列名.在给表或视图中部分列添加数据时,必须使用该选项说明这部分列名. DEFAULT VALUES说明向表中所有列插入其缺省值.对于具有INDENTITY属性或timestamp数据类型的列,系统将自动插入下一个适当值.对于没有设置缺省值的列,根据它们是否允许空值,将插入null或返回一错误信息. 图1 values_list的格式为: VALUES(DEFAULT|constant_expression [,DEFAUL

MYSQL插入处理重复键值的几种方法_Mysql

先建立2个测试表,在id列上创建unique约束. mysql> create table test1(id int,name varchar(5),type int,primary key(id)); Query OK, 0 rows affected (0.01 sec) mysql> create table test2(id int,name varchar(5),type int,primary key(id)); Query OK, 0 rows affected (0.01 se

一列一列向access表中插入数据,列数是一个变量,用循环,用什么sql语句

问题描述 一列一列向access表中插入数据,列数是一个变量,用循环,用什么sql语句 用sql语句向ACCESS的一张表中添加数据,因为具体的列数还不清楚,所以想用循环一列一列向ACCESS表中插入数据,采用insert,为什么插入30行数据(即一列),当插第二列数据时就从第31行,第二列开始了(应该是第一行第二列开始).如果不用insert,用update那语句怎么写,一直出错. 解决方案 你的数据库表结构有问题.你应该把你的列作为行来插入.数据库中的表,列就应该是确定的. 解决方案二: 你

SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)

原文:SQL Server 动态行转列(参数化表名.分组列.行转列字段.字段值) 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL,动态列字段: 方法三:使用PIVOT关系运算符,静态列字段: 方法四:使用PIVOT关系运算符,动态列字段: 扩展阅读一:参数化表名.分组列.行转列字段.字段值: 扩展阅读二:在前面的基础上加入条件过滤: 参考文献(R

在SQL Server数据库中为标识(IDENTITY)列插入显式值_MsSql

如果我们在标识列中插入值,例如: insert member(id,username) values(10,'admin') 则在查询分析器里面会返回错误信息:  引用内容 服务器: 消息 544,级别 16,状态 1,行 1 当 IDENTITY_Insert 设置为 OFF 时,不能向表 'member' 中的标识列插入显式值. 而在ASP程序中会返回错误信息:  引用内容 Microsoft OLE DB Provider for SQL Server 错误 '80040e14'  当 I

一个简单动态列插入表的问题,立马给分

问题描述 请问大家一个问题加入我现在有一个DataTabe,其中存储的数据行,其列数不固定,但其列名对应数据库的列字段,请问我如何动态的将其插入到数据库中,请大家赐教,我想用SQLPARAMETER,但是苦于维数在定义的时候必须是常数,所以我就没招了如c1c212还有加入DataTable有成千上万条,这样插入效率如何提高?我是要将一个库的表数据复制到另外一个表,但是需要复制的列字段可以动态选择 解决方案 解决方案二:看了半天,是不是你把所有的Table都放一同一个Table中存储了???解决方