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)
-   -   On Delete Set Default (https://www.clubdelphi.com/foros/showthread.php?t=58608)

franfl 25-07-2008 14:47:29

On Delete Set Default
 
Hola
Tengo dos tablas: CLIENTE q tiene una foreign key a PROGRAMA, entonces necesito hacer q al borrar un programa, en CLIENTE me guarde un 0, q es un programa q nunca lo puedo modificar ni borrar. Entonces no se como declararlo, vi que se hace con un set default pero me da error al crearla.

ALTER TABLE CLIENTE
add constraint IDPROGRAMA
FOREIGN KEY(IDPROGRAMA) REFERENCES PROGRAMA(IDPROGRAMA) ON DELETE SET DEFAULT 0 ON UPDATE CASCADE

Ah uso INTERBASE
A ver si alguien me puede ayudar
Muchas gracias

RolphyReyes 25-07-2008 16:39:48

Saludos.

Primeramente tu campo IDPROGRAMA en tu tabla CLIENTE debe estar declarada con un valor por defecto, en este caso 0.

Luego de esto para hacer que ese columna quede cero al borrar debes de poner:
Código SQL [-]
ALTER TABLE CLIENTE
ADD CONSTRAINT FK_IDPROGRAMA
FOREIGN KEY (IDPROGRAMA) 
REFERENCES PROGRAMA(IDPROGRAMA) ON DELETE SET DEFAULT 
ON UPDATE CASCADE

franfl 25-07-2008 19:04:18

El problema era que no sabia donde poner el valor por defecto, entonces lo que hice fue volver a crear la tabla asi:

CREATE TABLE CLIENTE (IDCLIENTE INTEGER NOT NULL, IDPROGRAMA INTEGER DEFAULT 0 NOT NULL,
PRIMARY KEY(IDCLIENTE),
FOREIGN KEY(IDPROGRAMA) REFERENCES PROGRAMA(IDPROGRAMA)
ON DELETE SET DEFAULT ON UPDATE CASCADE);
Muchas gracias por vuestro tiempo


La franja horaria es GMT +2. Ahora son las 22:25:11.

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