如果没有EXISTS INSERT sql语句不工作c#

时间:2018-02-12 11:35:08

标签: c# mysql

如果不存在,我正在尝试插入'声明,我没有收到任何错误,并且数据库中不存在该行,但它仍然不会添加它。执行普通'插入'但是,如果“不存在”,则不起作用。已添加。

我也尝试过包括BEGIN&结束,它不起作用。

我哪里出错?

    string getStudentModuleId = "SELECT ModuleId FROM StudentModuleMarks WHERE Mark < 40";

    SqlCommand myCommand = new SqlCommand(getStudentModuleId, MyConnection3);

    try
    {
        moduleid = (int)myCommand.ExecuteScalar();

        string addRepeat = "IF NOT EXISTS (SELECT * FROM StudentModules WHERE ModuleId = @moduleid AND SchoolYear = '2018') INSERT INTO StudentModules(StudentDegreeId, ModuleId, Repeat, SchoolYear, EnrolledStatus) VALUES (1,@moduleid,1,'2018','Active')";


        SqlCommand command = new SqlCommand(addRepeat, MyConnection3);
        command.Parameters.AddWithValue("@moduleid", moduleid);
        command.ExecuteNonQuery();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }

1 个答案:

答案 0 :(得分:1)

看来你正在使用sql server,对于MySQL,你可以按照这种技术插入记录,如果它不存在:

INSERT INTO StudentModules(StudentDegreeId, ModuleId, Repeat, SchoolYear, EnrolledStatus) 
    select 1,@moduleid, 1, '2018', 'Active' from dual 
        where NOT EXISTS (SELECT * FROM StudentModules WHERE ModuleId = @moduleid AND SchoolYear = '2018')

请注意,在MySQL中,您并不需要存在一个名为dual的表:它是一个特殊的表名,可用于从中选择任何内容。并且它将始终使用SELECT查询输出单个记录。