una - restriccion check sql server
Restringir una tabla de base de datos para que solo una fila pueda tener un valor particular en una columna (1)
Soy nuevo en SQL y estoy tratando de descubrir un mensaje de error que recibo cuando trato de seguir las sugerencias en la publicación aquí para hacer cumplir solo un ''Sí'' en mi columna.
DROP TABLE team CASCADE CONSTRAINTS PURGE;
create table team (
name varchar2(4) NOT NULL UNIQUE,
isTeamLead char(3)
check (isTeamLead in (''Yes'')));
create unique index only_one_yes on team(isTeamLead)
(case when col=''YES'' then ''YES'' end);
El informe de error es el siguiente:
Error report -
SQL Error: ORA-02158: invalid CREATE INDEX option
02158. 00000 - "invalid CREATE INDEX option"
*Cause: An option other than COMPRESS, NOCOMPRESS, PCTFREE, INITRANS,
MAXTRANS, STORAGE, TABLESPACE, PARALLEL, NOPARALLEL, RECOVERABLE,
UNRECOVERABLE, LOGGING, NOLOGGING, LOCAL, or GLOBAL was specified.
*Action: Choose one of the valid CREATE INDEX options.
¿Alguna idea?
Ejecución de Oracle Database 11g Enterprise Edition versión 11.2.0.1.0
Elimine la parte del case
de la declaración de create index
. Esto ejecuta OK:
create table team (
name varchar2(4) NOT NULL UNIQUE,
isTeamLead char(3) check (isTeamLead in (''Yes''))
);
create unique index only_one_yes on team(isTeamLead);
insert into team values (''x'', ''Yes'');
insert into team values (''y'', null);
Ver SQLFiddle .