在1个表中插入数据,其中包含来自其他2个

时间:2016-12-01 15:42:27

标签: c# mysql

所以我有这个:

INSERT INTO Track (Trackname, Trackinfo) VALUES (Value1, Value2)
INSERT INTO Artiest (Artist) VALUES (Value1)

这两个表都有一个auto_increment的ID 如何创建一个具有ID ??

的表

我想在C#

中这样做 编辑:也许在MySQL中有一种方法我可以获得2个表的最后ID?

2 个答案:

答案 0 :(得分:1)

您可以使用T-SQL和SCOPE_IDENTITY()编写存储过程。 或者您使用LINQ to Entities并检索新创建的实体的ID。

T-SQL:

DECLARE @TrackID AS int
INSERT INTO Track (Trackname, Trackinfo) VALUES (Value1, Value2)
SET @TrackID = SCOPE_IDENTITY()

DECLARE @ArtiestID AS int
INSERT INTO Artiest (Artist) VALUES (Value1)
SET @ArtiestID = SCOPE_IDENTITY()

现在使用这些ID插入到您的表格中。

INSERT INTO TrackArtiest (TrackID , ArtiestID ) VALUES (@TrackID , @ArtiestID)

使用Linq to Entities:

var myTrackObject = new Track(Value1, Value2);
var myArtiestObject= new Artiest(Value1);

// db is your datacontext
db.Tracks.Insert(myTrackObject);
db.Artiests.Insert(myArtiestObject);
db.SubmitChanges();

// You can retrieve the id from the object
int trackID = myTrackObject.ID;
int artiestID = myArtiestObject.ID;

var myTrackArtiest = new TrackArtiest(trackID, artiestID);
db.TrackArtiest.Insert(myTrackArtiest );
db.SubmitChanges();

这是你的意思吗?

答案 1 :(得分:0)

如果您正在使用SQL并希望返回插入操作的ID。使用:SQL中的SCOPE_IDENTITY()函数。但是你必须将它返回并映射到C#