Сложные запросы в базе данных SQL Server 2005 - PullRequest
1 голос
/ 12 февраля 2009

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

@NameParameter NVARCHAR(512)
Select Name from MyTable
WHERE Name=@NameParameter

Вопрос в том, куда мне поставить этот запрос?

Ответы [ 2 ]

2 голосов
/ 12 февраля 2009

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

@childname NVARCHAR(255), @parentname NVARCHAR(255)
SELECT * FROM [child_records] 
WHERE [parent_name] = @parentname 
AND [child_name] = @childname
1 голос
/ 12 февраля 2009

На первый взгляд, я считаю, что это должно войти в "Вместо триггера". Эта ссылка является хорошим примером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...