delphi存储过程有重复怎么办

我那个是存储学生选课的表,然后那个表里有3个字段,分别是学号,课程编号,课程名称。而学号和课程编号都是主键,代码如下:procedureTF_xxxk.Button1Cl... 我那个是存储学生选课的表,然后那个表里有3个字段,分别是学号,课程编号,课程名称。而学号和课程编号都是主键,代码如下:
procedure TF_xxxk.Button1Click(Sender: TObject);
begin
with query2 do
begin
close;
sql.Clear;
sql.Add('select Sno from Student where Sno=:nn');//student表里的Sno(学号)
params[0].AsString:=edit1.Text;
open;
end;
if (query2.RecordCount<=0)
then
begin
showmessage('该学号不存在,请重新输入学号!');
edit1.SetFocus ;
exit;
end
else
begin
WITH StoredProc1 DO
begin
......... //这里的代码没有错,
.........
end;
end;
我会判断学号不存在,但不会判断这个学号已经选了那个课程,这样就有冲突了!如果那个学号选了他已经选了的课的话,那么就两个主键就有重复了,我就是这里错问题了,希望你能帮我吧!
展开
 我来答
万琼瑶
2010-12-09 · 超过10用户采纳过TA的回答
知道答主
回答量:20
采纳率:0%
帮助的人:26.5万
展开全部
这个就是有关数据库的设计了,一个数据库里是可以同时存在两个主键的,通常 表Student:Sno为主键;表Course:Cno为主键,表S_C:Sno,Cno同时为主键外加字段grade(成绩)。学生选课的时候,选一门,就加入到数据库的表S_C中,进行判断时就可以用Group by语句来查询是否某门课程已选。
xftyyyyb
2010-12-09
知道答主
回答量:6
采纳率:0%
帮助的人:9688
展开全部
你用两个参数查询,一个是学号,一个是课程的ID号,两个同时传入,如果有返回就表示<这个学号已经选了那个课程>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式