当前位置: 首页 > 知识库问答 >
问题:

检查冲突/学员不能在同一课程中注册两次

戚俊健
2023-03-14

如果我有3张桌子

名为students(student_id,student_name)的表

课程资料:(1,数学),(2,英语),(3,科学)

名为注册(student_id,course_id)的表注册数据:(1,1),(1,2),(1,3),.....学生不能像(1,1),(1,1)那样在同一门课程上注册两次

CREATE TABLE "enrollment" (
"student_id"    INTEGER,
"course_id" INTEGER,
FOREIGN KEY("student_id") REFERENCES "students"("student_id"),
PRIMARY KEY("student_id","course_id"),
FOREIGN KEY("course_id") REFERENCES "courses"("course_id")

);

注册课程:

 def enroll(student_id,course_id):

        dbase.execute(''' INSERT INTO enrollment(student_id,course_id)
                    VALUES(?,?)''',(student_id,course_id))
        dbase.commit()
        print("Record inserted")




  student_id = int(input('Enter student id: ')
  data = cur.execute("SELECT * FROM students WHERE student_id= ?",(student_id,))
  found = data.fetchone()
  if found:
      course_id = int(input("Enter the course id: "))
      if course_id >= 1 and course_id <= 3:
           enroll(student_id,course_id) 
      else:
           print('please try with valid course id!')
           main_menu()
   else:
       main_menu()       

共有1个答案

勾通
2023-03-14

您不需要创建单独的注册表来为学生设置course_id,只需将course_id字段添加到学生表中即可。但是如果您需要一个单独的表,只需在student_id字段上添加一个唯一的约束,添加以下一行以创建table注册脚本,或者更改该表

CONSTRAINT uc_student_id UNIQUE (student_id)
 类似资料:
  • 在我的应用程序中,我有以下代码可注册到GCM服务: 当我运行这段代码时,我在服务器中看到我的设备用2个不同的注册了两次,当服务器发送推送时,设备收到2条消息。 这是正常的事情吗?有没有办法确保只有一个?

  • 我怎样才能防止学生注册课程有必修课必须完成它 代码:

  • 问题内容: 我正在尝试编译与Hexagon.java相同的程序包(和目录)中的Board.java,但出现此错误: Board.java的前几行: Hexagon.java的前几行: 我只是看不到我在做什么错。有任何想法吗? 谢谢 问题答案: 我很确定您是从错误的目录中进行编译。 您应该从 源根目录进行 编译 ,而不是从oadams_atroches目录中进行编译。 看一下这个bash会话: 如果

  • 我的客户机/服务器上的推送通知设备注册管理有一个小问题。 同样,这里的问题是,我有两个或更多的注册ID都可以工作(如果我旧的一个在尝试从服务器发布消息时不工作,这不会有问题,因为我可以简单地清理它)。

  • 嘿,我的游戏代码有问题。例如,有没有办法检查我的玩家sprite(英雄)右侧是否与obstacle_sprite组发生碰撞? 我只能弄清楚如何检查一般的碰撞,但如果玩家的右侧与障碍物相撞,我只想获得真正的输出。 在我的代码中,我使用一个隐形精灵作为hitbox,并将玩家吸引到这个隐形精灵中以检查碰撞,但使其看起来像障碍物拒绝玩家移动。

  • 我使用下面的类制作了一个项目符号列表和一个精灵列表。如何检测子弹是否与子画面发生碰撞,然后删除该精灵和子弹?