使用 INSERT IDENTITY 插入多个表 - ADO.Net
Posted
技术标签:
【中文标题】使用 INSERT IDENTITY 插入多个表 - ADO.Net【英文标题】:Insert into multiple tables using INSERT_IDENTITY - ADO.Net 【发布时间】:2016-12-27 10:16:38 【问题描述】:我想用 ADO.NET 在多个表中插入记录。
我想在名为 Professionals 的表中插入一条新记录。它有一个映射到不同表的外键。 表:
例子:
cmd.CommandText = "insert T_Name select (Name.T_Name,Date.T_Name,DId.Date) values (@N,GETDATE(),???)from T_Name inner join Date ON Date.DId=T_Name.DId; ";
cmd.Parameters.AddWithValue("@N", txt_Name.Text);
或
...
如何一次将值添加到这些表中?
【问题讨论】:
先完成你的问题,然后点击“发布”按钮。 我完全问了问题 OR ..... 呢?? 使用 ADO.Net 的任何其他方式 【参考方案1】:为第一个表添加插入 sql 后
SELECT SCOPE_IDENTITY();
然后你得到最后插入的 id。您可以使用第二个 sql 参数。
例子:
var dateNow = DateTime.Now;
var cmd = new SqlCommand("INSERT INTO Date (Date) VALUES (@Date);SELECT SCOPE_IDENTITY();", cnn);
cmd.Parameters.AddWithValue("@Date", dateNow);
var insertedId = cmd.ExecuteScalar();
cmd = new SqlCommand("INSERT INTO T_Name (Name,Date,DId) VALUES (@Name,@Date,@DId);", cnn);
cmd.Parameters.AddWithValue("@Name", "Test");
cmd.Parameters.AddWithValue("@Date", dateNow);
cmd.Parameters.AddWithValue("@DId", insertedId);
cmd.ExecuteNonQuery(); //or ExecuteScalar() for get last insertedId
【讨论】:
你能写一个例子吗?以上是关于使用 INSERT IDENTITY 插入多个表 - ADO.Net的主要内容,如果未能解决你的问题,请参考以下文章
无法添加表行,因为“当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'Users' 中插入标识列的显式值”错误
当 IDENTITY_INSERT 设置为 OFF 时,不能为表中的标识列插入显式值
实体框架抛出无法在表中插入标识列的显式值...当 IDENTITY_INSERT 设置为 OFF 错误
FireDAC,阵列DML,SQL Server和IDENTITY_INSERT
当 IDENTITY_INSERT 设置为 OFF 时,不能向表"*User" 中的标识列插入显示值
当 IDENTITY_INSERT 设置为 OFF 时,无法在表“tbl Fingerprint”中插入标识列的显式值 [重复]