У меня есть таблица SQL, написанная на MSSQL:
create table [action]
(
action_id bigint identity not null, -- PK
action_action char(1) not null, -- 'C' Call, 'R' Raise, 'F' Fold, 'P' Post
action_size decimal(9,2) not null, -- zero if fold, > zero otherwise
constraint pk_action primary key clustered (action_id),
constraint chk_action_action check (action_action in('C','R','F','P'))
)
Я хочу наложить ограничение на столбец action_size
так, чтобы:
1) Если action_action
равно 'F', то action_size
должно быть 0,00 (или ноль, если это более выполнимо)
2) Если action_action
является чем-то отличным от 'F', тогда action_size
должно быть больше нуля (то есть> = 0,01)
Как мне это выразить? Я попробовал:
constraint chk_action_size check (
select action_action
case 'F' action_size = 0.00
else action_size > 0.00
)
... безрезультатно.
Я пишу это на MSSQL 2005, но хотел бы найти решение, которое также работает с MySQL 5.1.34.
Кстати, если вы хотите прокомментировать мою колонку action_action
, не стесняйтесь. Либо никогда не будет других допустимых значений для action_action
, либо, если они есть, это будет чрезвычайно редко и будет только ~ 1 другое действительное значение.