guizans   03-01-2025, 19:55
#1
Hola.

Repasando el vídeo sobre bases de datos de Shordi veo que algunos campos usa el "delete restrict" para evitar el borrado de un registro. También lo estoy empleando en vistas que me parece muy práctico, pero me surge un pequeño problema. Si intento borrar un registro en Gambas en la base datos, a pesar de la sentencia me lo borra. En cambio, si hago la misma operación desde el programa DB Browser si que me genera un error y no me lo borra, lo cual es el comportamiento correcto a mi entender.

 La pregunta surge sola ¿por qué desde Gambas si puedo borrar ese campo y no me genera ningún error?

Muchas gracias.

Un saludo.
Shordi   04-01-2025, 11:50
#2
En las bases de datos de datos SQLite, la integridad referencial no viene activada por defecto aunque se soporta a nivel sintáctico. Es decir si escribes la sentencia usando el delete restrict, no se generan errores pero por defecto no tiene ningún efecto.
Para activarla justo después de abrir la conexión tienes que usar la sentencia

miconexion.Exec("PRAGMA foreign_keys=ON")

A partir de ahí sí te funcionará correcto.

Saludos

No podemos regresar
guizans   05-01-2025, 18:10
#3
Gracias por la respuesta, no lo sabía.

Un saludo.
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.