我在sql中有一个表,它使用adjacency model来创建子/父关系。这是确切的架构:
id int primary key identity(1,1)
name nvarchar(max)
parent int
现在我希望在同一个父级中只有一个名称。父母1的另一个词应该只有一个名字。如果该名称想要显示在另一条记录中,则它必须具有不同的父级。我怎么能在t-sql中做到这一点?
答案 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)
您可以在(父级,姓名)上创建唯一索引。