Sql条件有两个foriegn键列

时间:2018-05-04 22:05:45

标签: sql-server

docker run

ClassId可以有多个基本ID,但不能重复     我想写一个条件如果任何ClassId有重复的行具有相同的BaseId' s

    I'm new to sql and
    have a table dbo.Student




**column**                             **datatype**
     Student Id Primary Key            int not null
    ClassId Foriegn Key                int not null
    BaseId        Foriegn Key          int not null

2 个答案:

答案 0 :(得分:2)

您可以使用以下查询来检查表格中是否有任何重复的行

select ClassId,baseid, COUNT(*) NumberOfDuplicate
from student
group by ClassId,baseid
having count(*) >1

答案 1 :(得分:1)

SQL Server中存在“唯一”约束。您可以向该列添加一个,它将阻止输入该列值不唯一的行。对于非键的列,允许使用唯一约束。

这个SO答案有gui解决方案和脚本解决方案:

stackoverflow.com/questions/5181877/

相关答案的要点:

ALTER TABLE TableName ADD CONSTRAINT ConstraintName UNIQUE(ColumnName1, ColumnName2)

这将对Column1和Column2的组合设置唯一约束。

在SSMS对象资源管理器中,如果展开表格并查看“关键点”以查看约束。

GUI步骤:

Open SQL Server Management Studio.
Expand the Tables folder of the database where you want to create the 
constraint.
Right-click the table where you want to add the constraint and click Design.
In the Table Designer menu, click Indexes/Keys.
In the Indexes/Keys dialog box, click Add.
Choose Unique Key in the Type drop-down list.