强制规则在SQL Server中每个组合有一个记录

时间:2012-02-07 22:57:32

标签: sql database tsql relational-database

我在sql中有一个表,它使用adjacency model来创建子/父关系。这是确切的架构:

id int primary key identity(1,1)
name nvarchar(max)
parent int

现在我希望在同一个父级中只有一个名称。父母1的另一个词应该只有一个名字。如果该名称想要显示在另一条记录中,则它必须具有不同的父级。我怎么能在t-sql中做到这一点?

2 个答案:

答案 0 :(得分:4)

我认为你正在寻找独特的约束。这将允许您定义数据在表中必须唯一但不属于主键的列组合。

您使用的是SQL Server吗?如果是这样,这两篇文章应该有所帮助:

概述:http://msdn.microsoft.com/en-us/library/ms191166.aspx

创建/修改:http://msdn.microsoft.com/en-us/library/ms177420.aspx

编辑以提供示例

ALTER TABLE [YourTable]
ADD CONSTRAINT [YourConstraint] UNIQUE NONCLUSTERED ([name], [parent])

答案 1 :(得分:1)

您可以在(父级,姓名)上创建唯一索引。