Tabla en mysql. Fallo en el sistema al cargar registros. No puedo cargar el combo con el código

Tengo un pequeño problema, que en SQL Server lo supe solucionar pero en MySQL no se como hacerlo.
Lo voy a tratar con un ejemplo para que sea más claro.
Tengo una tabla ciudad, que tiene dos campos, el código y ls descripción.
Tengo otra tabla (proveedor) donde guardo el código de la ciudad seleccionada en un combo (que se carga de la tabla ciudad)...
El problema que tengo es que (a diferencia de SQL Server) puedo eliminar sin problemas desde la base de datos una ciudad que haya sido guardada en la tabla proveedor.
Y peor aun, cuando cargo el registro proveedor, mi sistema se cae porque no puede cargar el combo con el código que tenia guardado porque ya no existe.
En SQL Server, al tratar de eliminar una ciudad desde la base de datos, me tiraba el error -2147217900 con el cual yo detectaba una operación ilícita.
¿Cómo puedo detectar esa operación en este caso que utilizo MYSQL?
1

1 respuesta

Respuesta
1
No, no la conozco.
La busqué en el manual de referencia de MySQL y no existe, ni como comando general ni como parte de ALTER TABLE.
Te mando el link por si deseas consultarlo:
http://dev.mysql.com/doc/mysql/en/alter-table.html
Mira esta página...
http://databasejournal.com/features/mysql/print.php/10897_2248101_2
Según entiendo hay que eliminar primero la foreign key y luego agregarla especificando el On DELETE RESTRICT
Pero no me resulta
Ah Ok!
Intenta lo siguiente:
ALTER TABLE `proveedor`.`Ciudad` MODIFY COLUMN `cve_ciudad` INT(5) UNSIGNED NOT NULL DEFAULT 0,
ADD CONSTRAINT `FK_nombre_foreign_key` FOREIGN KEY `FK_nombre_foreign_key` (`campo1 de la llave`, `campo2 de la llave`, `campon de la llave)
REFERENCES `ciudad` (`campo1 de la llave`, `campo2 de la llave`, `campon de la llave`)
ON DELETE RESTRICT
ON UPDATE RESTRICT;
Espero que se entienda.
Por lo que veo es necesario escribir el tipo de tu campo a proteger, poner la relación entre las tablas, en ambas debe estar la misma llave y debes definir el nombre de tu llave foreign
A ver si sale.
Tal vez sea la versión del MySQL.
¿Qué versión tienes?
¿No tienes el usuario administrador?
Parece que no tienes privilegios para hacer esto.
:S
La version es
4.0.22-standard
Al menos no tuve errores en la sintaxis pero me tira
#1142 - alter command denied to user: '[email protected]' for table 'situacion'
(Las tablas proveedor y ciudad solo eran el ejemplo)
Proveedor---->zarpe
Ciudad---->situación
Y en la tabla zarpe el campo se llama "situacion_codigo"
Y en la tabla situación el campo se llama "codigo"
Si mandas llamar estos procesos desde un programa, deberás hacer un filtro, es decir, preguntar si el campo se necesita en otras tablas y no permitir eliminarlo, o en otro caso, borrar también los registros de la otra tabla.
De otra forma, hasta donde sé; no puede evitarse.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas