有关修改主键的update语句的一点困惑和指正

KayGuoWhu 2012-09-27 09:45:21
数据库里有名为major的表major(major_id,major_name,depart_id),其中major_id为主键。
想实现选择修改的major数据行,弹出修改窗口,里面已填充好一行内容,其中depart_id为只读,可修改。
代码如下:
SqlConnection conn = new SqlConnection (connString);
string UpdSqlStr = "update major set " +
"major_name = '" + textBox2.Text + "'," +
"major_id = '" + textBox1.Text + "' where depart_id = '"
+ depart_id + "'";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = UpdSqlStr;
conn.Open();
cmd.Connection = conn;
cmd.ExecuteNonQuery();
conn.Close();
this.DialogResult = DialogResult.OK;
this.Close();

执行总是报错“违反了 PRIMARY KEY 约束 'PK_major'。不能在对象 'dbo.major' 中插入重复键”
大致知道哪里错,但就是不是很了解如何改动能够在规则内又不需要进行大的改动。
劳烦各位指正了!
...全文
990 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
y2565120 2012-10-02
  • 打赏
  • 举报
回复
不能随意修改主键。
天下如山 2012-09-28
  • 打赏
  • 举报
回复
否则违反主键约束。
天下如山 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
textBox1.Text不能为数据库major_id列中已存在的值.
[/Quote]
+1
只在此山中 2012-09-28
  • 打赏
  • 举报
回复
textBox1.Text不能为数据库major_id列中已存在的值.
ggewt2td 2012-09-27
  • 打赏
  • 举报
回复
说明你表没设计好,主键一般是不允许改变的,
可以改变的最好不要作为主键。

你可以另外增加一个字段做主键,
然后设置 major_id 为唯一索引。

还有你的程序设计有问题,
怎么能根据 depart_id 去修改作为主键的major_id,
depart_id又不是唯一的,那肯定会导致major_id重复,

你的设计感觉很乱

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧