SQL Server - Delete y Update en SQL Server

   
Vista:

Delete y Update en SQL Server

Publicado por Orlando (13 intervenciones) el 27/12/2007 15:46:44
Hola.

Tengo una consulta; estuve probando en SQL Server 2000 y resulta que creo hay una restriccion cuando quiero borrar o actualizar registros de una tabla, esta restriccion creo que es por defecto cuando se crea la tabla o cuando se agregan las restricciones de FK, ya que cuando quiero borrar un registro de una tabla(tabla cliente) que mantiene una relacion por ejm con tabla Ordenes me sale un error q se debe a q ordenes tiene una relacion con clientes y eso seria lo justo, lo mismo para actualizar.

La pregunta es como hago para q no me salga ese error, en SQL Server 2000 se puede implementar la actualizacion y borrado en cascada? como? y como lo hago por codigo y en q momento lo implemento(al crear la tabla, al crear la restriccion Foreign Key ?? ).

La otra pregunta es si en SQL Server 2005 tambien pasa esto?? y en q otros Manejadores de bases de datos pasa esto y si se puede implementar cascada, como se haria??

Gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Delete y Update en SQL Server

Publicado por Isaias (3308 intervenciones) el 28/12/2007 01:11:56
Orlando

El efecto se llama DRI (Data Referential Integrity) o integridad referencial de los datos.

Es logico, que no puedes dejar registros "huerfanos", imaginate, una factura, sin saber quien es su cliente.

Esto se puede implementar despues que has creado la tabla, con un ALTER TABLE, checa las opciones en tu BOOKS ON LINE (BOL)

< column_constraint > ::=
[ CONSTRAINT constraint_name ]
{ [ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
[WITH FILLFACTOR = fillfactor]
[ ON { filegroup | DEFAULT } ]
]
| [ [ FOREIGN KEY ]
REFERENCES ref_table [ ( ref_column ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
]
| CHECK [ NOT FOR REPLICATION ]
( logical_expression )
}

Tambien, puedes hacerlo de forma grafica en tu consola de administracion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Delete y Update en SQL Server

Publicado por Marcos (4 intervenciones) el 02/01/2008 18:38:49
Hola,
tenes, al menos, dos opciones:

1-Primero, y mejor, creá la Foreign key con la opción "on delete cascade".

2-Segundo, si no podes cambiar la estructura de la Base, usá Nautilus (http://sourceforge.net/projects/nautilus/), ubicá el registro a borrar y andá a la opción Scripts. Esta opción te produce un script para borrar un registro, pero antes todos los que lo referencian simulando el método en cascada.

Saludos, Marcos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar