Можете ли вы сказать SQL Server не возвращать определенные строки? - PullRequest
1 голос
/ 15 сентября 2009

У нас есть база данных, в которой контакты удаляются только программно, то есть мы устанавливаем бит с именем удалено в true. API обрабатывает это, но иногда вам нужно запускать запросы непосредственно к базе данных, и этот бит легко забыть и экспортировать контакты, которые фактически удалены. Это не большая проблема, потому что я привык к системе, но если я нахожусь в отпуске, или если кто-то еще должен взять на себя ответственность, я хотел бы убедиться, что эти строки не возвращаются - если специально не попросили. Это оставляет нам следующие два вопроса:

  1. Есть ли способ заставить SQL Server (в данном случае 2005) не возвращать строки, если, например, бит установлен в true?

  2. Если это так, можно ли получить эти строки, если их специально попросить (где bit = 'true')?

Ответы [ 3 ]

8 голосов
/ 15 сентября 2009

Чтобы выбрать не удаленные или удаленные строки, создайте два представления:

CREATE VIEW ActiveContacts
AS 
   SELECT (list of fields)
   FROM dbo.Contacts
   WHERE deleted = 0  

CREATE VIEW DeletedContacts
AS
  SELECT (list of fields)
  FROM dbo.Contacts
  WHERE deleted = 1

Теперь вы можете легко выбирать из активных или удаленных контактов:

SELECT (list of fields)
FROM ActiveContacts

SELECT (list of fields)
FROM DeletedContacts

Таким образом, вы можете легко инкапсулировать эти критерии выбора, и если вы не вернете этот «удаленный» флаг в своем представлении, внешние пользователи даже не увидят этот флаг и не узнают, что он там есть.

Марк

5 голосов
/ 15 сентября 2009

Единственный способ автоматически сделать это для вас - создать представления в соответствующих таблицах, которые специально исключают удаленные строки. Затем используйте реальные таблицы, когда вам нужно увидеть удаленные данные.

1 голос
/ 15 сентября 2009

Вы можете создать представление, которое скрывает эти строки, и если вам нужны строки напрямую, вы все равно можете перейти к таблице. Попробуйте CREATE VIEW vwBlah КАК ВЫБРАТЬ таблицу, столбцы, иди сюда, здесь ОТ ФИЛЬМА ИМЯ ГДЕ флаг = 0.

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