PostgreSql NPGSL重复主键

时间:2018-05-22 01:10:10

标签: c# postgresql npgsql

如果故意插入重复的主键,如何在NPGSQL中执行ExecuteNonQuery时返回错误或引发异常。执行时,它只是冻结,没有任何反应。我尝试用Try Catch包围代码,但它仍然在ExecuteNonQuery中冻结。

PS。不能使用AutoIncrement列。

编辑:

        try
        {
            command = new NpgsqlCommand(strQuery, conn);
            if (command.ExecuteNonQuery() > 0)
                return true;
            else
                return false;
        }
        catch(Exception ex)
        {
            return false;
        }

其中strQuery是命令文本。例如。我的表已经有主键值1.然后我会故意插入另一个1作为主键。你如何提出异常?

返回值为false时。我会抛出例外。但它在ExecuteNonQuery中冻结。

1 个答案:

答案 0 :(得分:1)

Npgsql使用PostgreSQL error 23505正确抛出PostgresException(重复的键值违反了唯一约束),这里有一些显示它的代码:

for username in usernames{
     if username.value == "Sean"{
      // do whatever you want here
    }
  }

您的代码中可能存在问题。如果您仍然认为存在问题,请提交一个完整示例,包括您正在使用的Npgsql版本以及显示该问题的完整,可运行的控制台程序(就像我在上面的片段中所做的那样)。 p>