【问题标题】:Prevent Duplicate Records in SQL Server防止 SQL Server 中的重复记录
【发布时间】:2017-08-10 07:47:54
【问题描述】:

我的数据库中有 3 个表,一个用于学生,另一个用于课程,第三个用于存储每个学生从课程中选择的内容。我想防止学生多次选择同一门课程。第三张表的Insert语句应该提供什么条件?

谢谢

【问题讨论】:

  • 欢迎来到 StackOverflo。请查看how-to-ask
  • 这真的不是一个有效的问题。这是您的业务逻辑。我很清楚这需要一个方法调用 GetvaluefromtableByuserId(userid) 然后一个 if 条件。就是这么简单。
  • 您需要在 StudentId、CourseId 中添加唯一约束,或者如果您无法更改表设计,则需要在插入之前检查记录是否已存在 - 如果不存在(从 StudentCourse 中选择 1,其中 StudentId = @StudentId 和 CouseId=@CourseId) BEGIN -- 在此处插入 -- END

标签: c# sql sql-server database visual-studio


【解决方案1】:

您的 StudentCourse 表应该对 (StudentId, CourseId) 表具有唯一约束。

作为替代方案,您可以在 StudentCourse 表上创建主键作为 (StudentId, CourseId) 上的复合键。

【讨论】:

  • 是的,谢谢,这是工作,唯一的约束可以完成这项工作
【解决方案2】:

虽然数据库中的每个表都必须有一个主键约束,但它通常是一个自动生成的值,在执行大多数数据库维护任务时很有用。但是,主键本身不会保护您免受可能包含重复的用户生成或用户捕获的数据的影响。输入“唯一”约束!这是一个非常强大的表级约束,您可以针对选定的表列将其应用于表,这可以极大地帮助防止数据中的重复。例如,假设您有一个“用户”表,并且其中有一个 EmailAddress 列,那么捕获 1 或 2 个具有相同电子邮件地址的用户肯定会很奇怪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-10
    • 2015-12-04
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 1970-01-01
    相关资源
    最近更新 更多