Banda Ancha EU

Comunidad de usuarios
de fibra, móvil y ADSL

SQL y Integridad referencial

Hispace

Hola compañeros/as,

Dispongo de 3 tablas creadas con valores ya introducidos. Actualmente necesito modificar la tabla para añadir integridad referencial (ON DELETE CASCADE), podeis darme alguna indicación de como hacerlo?

Un "Alter table"??? Algun tutorial?

Muchas gracias,

Este tema está cerrado a nuevas respuestas. Abre un nuevo tema para retomar la conversación.
quilloquepasa

Teniendo en cuenta que las tablas deben hallarse relacionadas, en "relaciones" debes activar "integridad referencial". En función de la aplicación que utilices existirá una leve variación.

🗨️ 5
Hispace

SQL Server...

Otra cosa, sabeis si es posible mantener dos claves principales en una tabla???

🗨️ 4
Kachinvo

Hace la polca que di esas cosas, pero si que te lo permite. Aunque nunca le encontre sentido, la verdad.

BocaDePez
BocaDePez

Sorry Oracle pero puede darte ideas,

ALTER TABLE ACCIONISTAS ADD
FOREIGN KEY (EMPRESASID)
REFERENCES BALANCES.EMPRESAS (EMPRESASID) ;

Primary Key solo puede haber una en cada tabla.

Aunque puedes aproximarte con:

Tabla1 ID_tab1(clave), datos, id_tab2
Tabla2 ID_tab2(clave),ID_tab1 (integridad de este campo en tabla1)

Teniendo integridad referencial puedes conseguir que ID_tab2 sea unico en Tab2 lo que no quita que las claves de la tabla_1 compartan mas de una clave de la tabla 2, pero te va a complicar las inserciones y borrados la propia integridad referencial.

Cuando vayas a insertar en la tabla_1 deberas insertar primero en la tabla2 los ID's. Debes tenerlo en cuenta para las actualizaciones.. vamos un rollo macabeo, complicado de mantener.

Serviria a tus propositos hacer una primary Key conjunta de ambas claves, funcionalmente no es lo que quieres , pero depende del set de datos que manejes.

🗨️ 1
BocaDePez
BocaDePez

Buscando un poco mas... puedes quitar el churro anterior de las 2 tablas si defines un indice sobre esa columna como UNIQUE de forma que no permita inserciones o modificaciones que choquen con esa "primary key 2".

Hay una pega si hay datos que incumplan esa condicion fallara la construccion del indice. Tendras que manipular los datos.

mas informacion en (link roto)

BocaDePez
BocaDePez

Añades la clave foránea por ejemplo a la tabla y al hacer eso indicas on delete cascade on update cascade.

Ejemplo relacion tabla 1 -> tabla 2. (en el sentido de la flecha).

alter table table2
add constraint fk_table2 foreign key (campo2) references table1(campo1) on update cascade on delete cascade