asp.net检查是插入表之前存在的主键

时间:2012-11-01 01:26:45

标签: asp.net sql insert primary-key

在插入表之前,寻找一种简单的方法来检查表中是否已存在主键。其中Fname是表中的主键。

SqlConnection conn = new SqlConnection(connStr);
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO [table] ([firstName], [lastName]) VALUES ('" + txtFName.Text + "','" + txtLName.Text + "')";        

cmd.ExecuteNonQuery();
conn.Close();

1 个答案:

答案 0 :(得分:2)

作为一般规则,您应该尝试插入。如果密钥存在,则dbms将返回错误。陷阱错误。

无论如何你必须捕获错误,因为除了主键约束之外还有很多东西可以防止插入行。其中

  • 任何其他类型的约束,如外键约束,检查约束等。
  • 磁盘错误。
  • 网络错误。
  • 飓风。

通过捕获错误,您不会失去任何效率。

  • 插入(无错误)需要一次往返数据库。
  • 插入(带有错误,陷阱)需要一次往返数据库,不计算你可能需要做些什么来纠正错误。如果你先检查了,你必须做所有纠正。
  • Check-then-insert需要两次往返数据库。

如果您尝试插入已存在主键的行,某些平台可以合并数据。最着名的(或最臭名昭着的,取决于你的观点)是MySQL's ON DUPLICATE KEY UPDATE