Используя финал для констант сильно поощряется. Однако я не использовал бы его для методов или классов (или по крайней мере думал бы об этом некоторое время), потому что это делает тестирование тяжелее, если не невозможный. Если абсолютно необходимо сделать класс или финал метода, удостоверьтесь, что этот класс реализует некоторый интерфейс, таким образом, Вы можете иметь насмешка реализация того же интерфейса.
Это работает:
CREATE TABLE dbo.Item
(
ItemId int NOT NULL IDENTITY (1, 1),
SpecialItemId int NULL,
IsSpecialItem AS
CAST(CASE ISNULL(SpecialItemId, 0) WHEN 0 THEN 0 ELSE 1 END AS bit)
)
SQL Server не имеет собственного истинного логического типа данных (в том смысле, что вы можете использовать переменную вместо логического выражения, например select * from Item, где IsSpecialItem
). Единственный способ представить это - что-то вроде того, что предлагает Марк, с использованием зарезервированных значений (в этом случае ваш запрос будет select * from Item, где IsSpecialItem = 1
).