Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-06-2012
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 16
Diego827 Va por buen camino
Gracias por responder!

Hola marcoszorrilla, gracias por responder. Ahora busco alguna referencia.
Responder Con Cita
  #2  
Antiguo 07-06-2012
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 16
Diego827 Va por buen camino
Encontre esto y me parece que es lo que necesito

Bueno encontre esto, me dirás si es lo que yo mismo deseo y a lo que te referías:

Código SQL [-]
CREATE TABLE SALARY_HISTORY
(EMP_NO EMPNO NOT NULL,
CHANGE_DATE DATE DEFAULT 'NOW' NOT NULL,
UPDATER_ID VARCHAR(20) NOT NULL,
SH_OLD_SALARY SALARY NOT NULL,
PERCENT_CHANGE DOUBLE PRECISION DEFAULT 0 NOT NULL CHECK (PERCENT_CHANGE BETWEEN –50 AND 50),
NEW_SALARY COMPUTED BY
(OLD_SALARY + OLD_SALARY * PERCENT_CHANGE / 100),
CONSTRAINT PK_SH PRIMARY KEY (EMP_NO, CHANGE_DATE, UPDATER_ID),
FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE (EMP_NO)
ON UPDATE CASCADE
ON DELETE CASCADE);

Marqué el área que creo que me indicas arriba, esa sería la forma de declararlo? Voy a probarlo y comento!
Responder Con Cita
  #3  
Antiguo 07-06-2012
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 16
Diego827 Va por buen camino
Excelente marcoszorrilla!

Me has ayudado a resolver mi problema.

Observa:

Código SQL [-]
CREATE TABLE PRUEBA (
  FECHA TIMESTAMP NOT NULL,
  DATO DECIMAL(2, 2));


ALTER TABLE BELEN ADD PRIMARY KEY (FECHA);

ALTER TABLE BELEN ADD CHECK (NIVEL BETWEEN 0 AND 5);

Y vualla! ahora salta un mensaje diciendo que esta violando un "check". Una pregunta más: Si necesito cambiar este valor en el futuro, como seria?
Debo primero hacer algo como:

Código SQL [-]
ALTER TABLE BELEN REMOVE CHECK (NIVEL BETWEEN 0 AND 5);
ALTER TABLE BELEN ADD CHECK (NIVEL BETWEEN 0 AND 6);

o sólo con darle:

Código SQL [-]
ALTER TABLE BELEN ADD CHECK (NIVEL BETWEEN 0 AND 6);

Como sería? Busque pero no encontré nada?! Voy a intentar hacerlo y posteo...
Responder Con Cita
  #4  
Antiguo 07-06-2012
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 16
Diego827 Va por buen camino
No puedo modificar el check creado... (help me)

Hola amigos;

Bueno pues he creado con la ayuda de marcoszorrilla la famosa restricción, empero no logro modificarla y mucho menos borrarla! ya intente usar "REMOVE" en vez de "ADD" y también intenté darle:

Código SQL [-]
ALTER TABLE BELEN ADD CHECK (NIVEL BETWEEN 0 AND 6);

Como sobreescribiendo el anterior CHECK pero no me funcionó, ¿alguna idea?
Responder Con Cita
  #5  
Antiguo 07-06-2012
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 16
Diego827 Va por buen camino
Ya lo logré!

Hola amigos:

Como no todos nacemos sabiendo, logre eliminar el check de esta manera:

Primero cometia el error de ingresar el valor fuera del check.

Y este de decia:
Código:
Opèration violates CHECK constraint INTEG_10 on view or table EJEMPLO
Entonces ejecute la siguiente instrucción en SQL:

Código SQL [-]
alter table EJEMPLO 
drop constraint INTEG_10

Y listo! lo único es que no se porque Interbase asigna el "INTEG_10" y si creo otra restricción "check" crea "INTEG_11", ¿no se puede personalizar este nombre para poder borrarlo sin tener que disparar la excepción?
Responder Con Cita
  #6  
Antiguo 07-06-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Diego.
Cita:
Interbase asigna el "INTEG_10" y si creo otra restricción "check" crea "INTEG_11", ¿no se puede personalizar este nombre para poder borrarlo sin tener que disparar la excepción?
En Firebird (y supongo que en Interbase también) podés hacer:
Código SQL [-]
ALTER TABLE EJEMPLO ADD CONSTRAINT CHECK_0_6 CHECK(NIVEL BETWEEN 0 AND 6);

De ese modo luego podrás hacer:
Código SQL [-]
ALTER TABLE EJEMPLO DROP CONSTRAINT CHECK_0_6;

Saludos.

Edito: Donde, CHECK_0_6 será el alias de la restricción.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-06-2012 a las 17:04:06.
Responder Con Cita
  #7  
Antiguo 07-06-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
A mí me gusta hacer estas cosas mediante un dominio, ejemplo:

Código SQL [-]
create domain domSiNo smallint default 0 check (value between 0 and 1); /* 0-No, 1-Si*/


create table tbConfiguracionEmpresa ( 
    Codigo domCodigoNoNulo, 
    GuardarHistoricoApuntes domSiNo, 
    primary key (Codigo));
Responder Con Cita
  #8  
Antiguo 07-06-2012
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 16
Diego827 Va por buen camino
Gracias amigos, ahora veo

Cita:
Empezado por ecfisa Ver Mensaje
Hola Diego.

En Firebird (y supongo que en Interbase también) podés hacer:
Código SQL [-]
ALTER TABLE EJEMPLO ADD CONSTRAINT CHECK_0_6 CHECK(NIVEL BETWEEN 0 AND 6);

De ese modo luego podrás hacer:
Código SQL [-]
ALTER TABLE EJEMPLO DROP CONSTRAINT CHECK_0_6;

Saludos.

Edito: Donde, CHECK_0_6 será el alias de la restricción.
Voy a probar esto ecfisa, gracias por tu colaboración!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Limites de Firebird gmontes Firebird e Interbase 1 24-03-2008 23:08:07
Limites de Delphi walito Varios 5 16-11-2007 15:32:34
Declaracion de nuevos tipos FGarcia Varios 2 10-05-2007 20:46:21
El Ser Humano no tiene LIMITES vtdeleon La Taberna 5 26-09-2006 17:18:36
Limites de datos muli Firebird e Interbase 1 22-10-2003 17:52:04


La franja horaria es GMT +2. Ahora son las 19:54:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi