Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Actualizar un check (https://www.clubdelphi.com/foros/showthread.php?t=8576)

cmgenny 26-03-2004 05:09:08

Actualizar un check
 
Hola

Como estan todos, tenia varios meses que no venia por aqui debido a unos problemas tecnicos $$$. Ok el caso es que ya estamos aqui para alimentar el foro con preguntas.

Quisiera actualizar un Check y no lo logro, estuve leyendo el hilo de subzero y no entiendo bien como fue que lo logro, no entiendo por que usa constraint y cuando intento hacerlo como el lo hizo no me sale. Me gustaria que me expliquen un poco mas detallada la forma que se hace.

Muchas Gracias por sus respuestas.

roman 26-03-2004 06:21:00

Que bueno que estás de vuelta pero, ¿realmente piensas que podemos ayudarte con la información que nos das?

¿Qué significa actualizar un Check? ¿Cuál es el hilo de subzero? Habiendo más de 8000 hilos es francamente imposible que recordemos todos. ¿Cómo vamos a saber por qué usa constraint si ni siquiera sabemos a que se refiere con eso ni en que contexto se usó?

Detalla más y seguro que algún experto en Interbase podrá resolver tu duda.

// Saludos

injavies 26-03-2004 12:43:27

Hola.

si no entendi mal tu pregunta creo que esto te puede ayudar
estoy ejemplos lo saque "The Dark Side of CppB" en la parte que hable de FireBird

create table Detalles (
RefPedido int not null,
NumLinea int not null,
RefArticulo int not null,
Cantidad int default 1 not null,
Descuento int default 0 not null,
check (Descuento between 0 and 50 or "Marteens Corporation"=
(select Nombre from Clientes
where Codigo = (select RefCliente from Pedidos
where Numero = Detalles.RefPedido))),
/* … */
);

Esta cláusula dice, en pocas palabras, que solamente el autor de este libro puede
beneficiarse de descuentos superiores al 50%.

otro ejemplo

create table Pedidos(
/* … */
check (Cliente in (select Codigo from Clientes))
);


espero que te ayude

cmgenny 27-03-2004 05:38:09

Dejame explicarme mejor
 
Okey

Dejame explicarme mejor, yo tengo una tabla que se llama EQUIPOS a su vez esta tiene una columna que se llama ESTATUS definida asi

CREATE TABLE EQUIPOS
ESTATUS SMALLINT DEFAULT 0
CHECK(ESTATUS = 0 OR ESTATUS =1)

Y si, tienes razon no seria actualizar, si no, modificar el check para que me acepte mas valores, yo lo he intentado asi.

ALTER TABLE EQUIPOS
DROP ESTATUS

Y no me deja hacerlo dice ther are 2 dependencies, lo que intento es borrarlo para despues crearlo como yo quiero con mas valores.

y al hilo que me referia es a este: http://www.clubdelphi.com/foros/show...ble+drop+check

Yo utilizo D6 con IB7

orodriguezc 27-03-2004 19:09:33

Hola cmgenny,

Cuando creas una tabla con restricción de comprobación (clausula check) puedes asociarle un nombre a la restricción. Si no lo haces, Interbase/firebird de manera automática le asigna algún nombre.

El caso es que conociendo el nombre de la restricción puedes cambiarla de manera sencilla. Coloco un ejemplo:

Código:

CREATE TABLE EQUIPOS(
  ESTATUS SMALLINT DEFAULT 0
    constraint  ckc_estatus check (ESTATUS = 0 OR ESTATUS =1),
  OTROCAMPO CHAR(1) )

Ahora, sabiendo que el nombre de la restriccion es ckc_estatus , podemos borrarlo y crearlo nuevamente:

Código:


ALTER TABLE EQUIPOS DROP CONSTRAINT CKC_ESTATUS;

alter table EQUIPOS
  add constraint CKC_ESTATUS
  check (ESTATUS = 0 OR ESTATUS =1 or ESTATUS=2)

Y de esta forma logras modificar el Check.

Si no le colocas nombre a la restricción aún puedes averiguarlo consultando las tablas del sistema (cosa que yo nunca hago :confused: ), o puedes realizar todo lo que requieres utilizando el IBExpert :) .

Espero te sirva. Saludos...

cmgenny 28-03-2004 18:09:18

Muhas Gracias
 
Tenias razon funciono a la perfección, lo que estaba haciendo mal era que no estaba dando el nombre a la constraint que tenia que modificar.

Muchisimas gracias.


La franja horaria es GMT +2. Ahora son las 18:51:56.

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