如何将数据插入两个表格?

时间:2019-02-11 16:16:08

标签: c# mysql sql

我有两个表FILM(Id, Title, Director, Year, Category)Record(Id, Film_id)

Id表中的

FILM用作Film_id表中Record的外键。

我想同时在两个表中插入数据。如何使用INSERT构造SQL查询?

using (var connection = new MySqlConnection(constring))
{
    connection.Open();
    using (var cmdDataBase = connection.CreateCommand())
    {   
        cmdDataBase.CommandText = "INSERT INTO film(Title, Director, Year, Category) VALUES (@Title, @Director, @Year, @Category) ";
        cmdDataBase.Parameters.Add(new MySqlParameter("@Title", fm.Title));
        cmdDataBase.Parameters.Add(new MySqlParameter("@Director", fm.Director));
        cmdDataBase.Parameters.Add(new MySqlParameter("@Year", fm.Year));
        cmdDataBase.Parameters.Add(new MySqlParameter("@Category",n));

        cmdDataBase.ExecuteNonQuery();
    }
}

3 个答案:

答案 0 :(得分:2)

您将获得带有output: { filename: "[name].[hash].js" } 的最后一个自动生成的ID。然后,您将使用事务,因为您不想插入父记录,如果您也不能插入子记录,那么我知道。

或多或少。您当然应该添加错误处理(LAST_INSERT_ID()try)。

catch

答案 1 :(得分:1)

您需要按顺序执行。首先,将记录添加到主表Film中,然后将其他表添加到Record中。检查以下内容:

INSERT INTO Film(Title, Director, Year, Category)
VALUES('Title', 'DirectorName', 1990, 'Action');

--Assuming ID for Record table is AUTO_INCREMENT column
INSERT INTO Record(Film_id)
VALUES ((SELECT id FROM Film WHERE Title='Title' and Director='Director'));

还可以使用LAST_INSERT_ID():

INSERT INTO Film
...

INSERT INTO Record
...
film_id = LAST_INSERT_ID()

参考:Mysql: How to insert values in a table which has a foreign key

答案 2 :(得分:1)

如果您使用的是MySQL,请尝试在查询末尾添加;return LAST_INSERT_ID();,并按如下所示添加return参数。

var returnVal = cmdDataBase.Parameters.Add("@ReturnVal", SqlDbType.Int);
returnVal.Direction = ParameterDirection.ReturnValue;

cmdDataBase.ExecuteNonQuery();提取returnVal后的ID

var id = returnParameter.Value;

之后,您可以使用id进行第二次插入。