Sql server 2005 SQLServer2005数据库中的复杂查询
我的数据库中有一个表,其中的记录在概念上可以是其他RCORD的子项。该表有一个非空的名称字段。我需要确保一组子项中的每个名称都是唯一的,但不能跨整个数据库。我想在数据库中使用一个约束来实现这一点。实现这一目标的最佳方式是什么? 我知道在这个过程中的某个时候,我必须进行如下查询:Sql server 2005 SQLServer2005数据库中的复杂查询,sql-server-2005,constraints,Sql Server 2005,Constraints,我的数据库中有一个表,其中的记录在概念上可以是其他RCORD的子项。该表有一个非空的名称字段。我需要确保一组子项中的每个名称都是唯一的,但不能跨整个数据库。我想在数据库中使用一个约束来实现这一点。实现这一目标的最佳方式是什么? 我知道在这个过程中的某个时候,我必须进行如下查询: @NameParameter NVARCHAR(512) Select Name from MyTable WHERE Name=@NameParameter 问题是我应该把这个查询放在哪里?乍一看,我认为这应该是一个
@NameParameter NVARCHAR(512)
Select Name from MyTable
WHERE Name=@NameParameter
问题是我应该把这个查询放在哪里?乍一看,我认为这应该是一个“而不是触发器”。这提供了一个很好的例子。我可能没有正确理解您的问题,但我的建议是创建另一个列来引用孩子的父记录。然后,您可以基于这两列创建多列索引,以加速在where子句中同时引用这些列的任何查询。。。因此,您的唯一性将来自{parent_name,child_name}。这两列上的约束将充当该表的键,并且不允许重复
@childname NVARCHAR(255), @parentname NVARCHAR(255)
SELECT * FROM [child_records]
WHERE [parent_name] = @parentname
AND [child_name] = @childname