2009-02-12 5 views
1

У меня есть таблица в моей базе данных, в которой записи концептуально могут быть детьми других rcords. В таблице указано не пустое поле имени. Мне нужно убедиться, что каждое имя в наборе детей уникально, но не по всей базе данных. Я хотел бы применить это, используя ограничение внутри базы данных. Каков наилучший способ сделать это? Я знаю, что я буду иметь, чтобы сделать запрос на какой-то момент в этом процессе, как это:Комплексные запросы в базе данных SQL Server 2005

@NameParameter NVARCHAR(512) 
Select Name from MyTable 
WHERE [email protected] 

Вопрос заключается в том, где я поставил этот вопрос?

ответ

2

Возможно, я неправильно понимаю ваш вопрос, но мое предложение - создать еще один столбец, который ссылается на родительскую запись ребенка. Затем вы можете создать индекс с несколькими столбцами на основе этих двух столбцов, чтобы ускорить любые запросы, которые связывают эти столбцы вместе в предложении where ... Таким образом, ваша уникальность будет получена из {parent_name, child_name}. Ограничение на эти два столбца будет действовать как ключ для этой таблицы и не допускать дубликатов.

@childname NVARCHAR(255), @parentname NVARCHAR(255) 
SELECT * FROM [child_records] 
WHERE [parent_name] = @parentname 
AND [child_name] = @childname 
1

На первый взгляд, я считаю, что это должно идти в «Вместо триггера». Хороший пример - это link.

Смежные вопросы