Запрос ограничения проверки SQL Server - PullRequest
3 голосов
/ 17 июля 2009

У меня есть таблица, в которой хранятся платежи, и я хочу убедиться, что в качестве способа оплаты используется кредитная карта, тогда в поле типа карты должно быть указано IN («Visa», «MasterCard», «Discover», «American Express»), однако если в качестве способа оплаты используется не кредитная карта, поле типа карты должно быть NULL.

Позволит ли контрольное ограничение использовать выражение вроде этого:

(method = 'CC' AND cardType IN ('Visa', 'MasterCard', 'Discover', 'American Express'))
OR
(method != 'CC' AND cardType = NULL)

С этим я могу быть совершенно не согласен, поскольку ограничения следует использовать только для проверки 1 поля (не уверен).

Также, если такое утверждение разрешено, может ли это быть неблагоприятным для производительности?

Редактировать: Я планирую в конечном итоге создать поле cardType, и в нашей таблице платежей в качестве внешнего ключа будет указан cardType ... это то, чем я сейчас хочу заняться

1 Ответ

3 голосов
/ 17 июля 2009

Почему бы просто не ввести внешний ключ в другую таблицу и не разрешить пустые значения?

Еще лучше было бы сохранить код типа карты в другой таблице и сохранить ключ к нему.

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