向数据库插入数据后返回新插入行的主键
2013-10-09 23:17
465 查看
在开发的时候,大家可能也遇见过下面类似的问题。
场景说明:
存在表1,表2两张表,两表满足以下条件:
表1 的主键为表2的外键
表1的主键为自动编号,所以在插入数据时,会自增,无需人为干预
现在,想进行如下操作:
向表1插入1条新纪录,同时需要向表2插入多条新记录,表2中插入记录的外键为表1新插入记录的主键
问题解析:
因为表1的主键为自动编号,所以向表1插入新纪录的过程中,我们程序员是不知道表1新插入这条记录的主键的,因为这个往往不需要我们关注。但是向表2插入新记录时,这个主键又是必须要获取到的,那我们该怎么办呢
可以采用下面的方法:
具体实例:
创建表tb_Class及表tb_Student。tb_Class的主键为classid,自动编号。tb_Student的外键classid与tb_Class表的主键classid对应。
插入数据操作:
插入两次后的结果为:
好了,88。
场景说明:
存在表1,表2两张表,两表满足以下条件:
表1 的主键为表2的外键
表1的主键为自动编号,所以在插入数据时,会自增,无需人为干预
现在,想进行如下操作:
向表1插入1条新纪录,同时需要向表2插入多条新记录,表2中插入记录的外键为表1新插入记录的主键
问题解析:
因为表1的主键为自动编号,所以向表1插入新纪录的过程中,我们程序员是不知道表1新插入这条记录的主键的,因为这个往往不需要我们关注。但是向表2插入新记录时,这个主键又是必须要获取到的,那我们该怎么办呢
可以采用下面的方法:
NSERT INTO tableName (fieldname ...) values (value ...) SELECT @@IDENTITY AS returnName;
具体实例:
创建表tb_Class及表tb_Student。tb_Class的主键为classid,自动编号。tb_Student的外键classid与tb_Class表的主键classid对应。
CREATE TABLE [dbo].[tb_Class]( [classid] [int] IDENTITY(1,1) NOT NULL, [classname] [nchar](10) NOT NULL ) ON [PRIMARY] CREATE TABLE [dbo].[tb_Student]( [id] [int] IDENTITY(1,1) NOT NULL, [name] [nchar](10) NOT NULL, [age] [int] NOT NULL, [classid] [int] NULL, CONSTRAINT [PK_tb_Student] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
插入数据操作:
DECLARE @classId AS INT; INSERT INTO tb_Class(classname) VALUES ('1班') SELECT @classId=@@IDENTITY; INSERT INTO tb_Student(name,age,classid) VALUES ('tiana0',20,@classId); INSERT INTO tb_Student(name,age,classid) VALUES ('tiana1',18,@classId); INSERT INTO tb_Student(name,age,classid) VALUES ('tiana2',21,@classId); SELECT * FROM tb_Class; SELECT * FROM tb_Student;
插入两次后的结果为:
好了,88。
相关文章推荐
- Mybatis插入操作 主键自增 返回成功 但是数据库没有数据
- 数据库插入数据返回当前主键ID值方法
- 如何使用myBatis在数据库中插入数据并返回主键
- 向数据库插入数据后返回新插入行的主键
- sql server里获取向数据库插入数据后返回新插入行的主键
- 数据库插入数据返回当前自增主键ID值的方法
- Mybatis+MySQL插入数据后返回主键
- 向数据库中插入数据并返回当前插入的行数及全局变量@@IDENTITY应用
- Mybatis+Mysql插入数据库返回自增主键id值的三种方法
- Java MyBatis 插入数据库返回主键
- 当向数据库插入数据的同时返回插入数据的编号(自动生成的编号)
- oracle 导入数据库备份文件步骤,插入数据提示主键冲突
- 在数据库中插入一行并且返回该行主键的值的做法(存储过程)
- mysql 批量插数据到数据库以及返回插入生成的id号
- mybatis3.2.3向数据库sql server 2005插入数据(insert)时返回主键值为空(null)或者1,
- 数据库插入返回主键
- 数据库插入记录并返回主键
- ibatis插入数据库时返回主键(sqlserver数据库)
- mybatis批量插入数据返回主键
- Java获取数据库自增主键表中插入数据的ID