SQLITE3 FOREIGN KEYS ON EVITAR BORRADOS

Source code related resources

Moderator: Rathinagiri

Post Reply
juanato
Posts: 44
Joined: Fri Sep 21, 2012 2:42 pm

SQLITE3 FOREIGN KEYS ON EVITAR BORRADOS

Post by juanato »

Hola a todos. En este trozo de código, siempre que se ejecuta un comando SQLITE3, lleva incorporado el control de la FOREIGN KEY al borrar la PRImARY KEY de una tabla auxiliar. La relación está más abajo... pero no funciona al borrar la tupla, ya que lo permite, existiendo en la tabla auxiliar la tupla. En concreto se crean cuentas contables de 8 dígitos con un grupo de 3 dígitos. Cuando se elimina el grupo3, lo permite, dejando huérfanas a todas las tuplas de la tabla de cuentas de 8 dígitos.

¿ Cómo se evita el borrado de la tabla primaria ?. ¿ Qué hay de erróneo en mi código ?


Gracias.

FUNCTION SaveData(cQueryDown)
//EscribeEstado(cQueryDown)
RETURN ( miscsql(oDataBase , " BEGIN TRANSACTION;PRAGMA foreign_keys = ON;"+cQueryDown+";COMMIT;"))



EscribeEstado("Creando TABLA PLAN CONTABLE PGC 8 digitos")
//Tabla PLAN CONTABLE 8 DIGITOS, Cuentas de 8 digitos que apuntan a nivel 3, tabla PGC3
cTableName := "grupopgc8"
cCreateTable := "CREATE TABLE IF NOT EXISTS grupopgc8 ( "
cCreateTable += "[grupo3] INTEGER NOT NULL,"
cCreateTable += "[describe] TEXT ,"
cCreateTable += "[debe] INTEGER ,"
cCreateTable += "[haber] INTEGER ,"
cCreateTable += "[grupo8] INTEGER KEY NOT NULL PRIMARY KEY,"
cCreateTable += "[balance] INTEGER, FOREIGN KEY(grupo3) REFERENCES grupopgc3(grupo3))"
CreateTable()


EscribeEstado("Creando TABLA PLAN CONTABLE PGC 3 digitos")
//Tabla PLAN CONTABLE 3 DIGITOS, GRUPOS de 3 digitos tabla PGC3
cTableName := "grupopgc3"
cCreateTable := "CREATE TABLE IF NOT EXISTS grupopgc3 ( "
cCreateTable += "[grupo3] INTEGER NOT NULL PRIMARY KEY,"
cCreateTable += "[describe] TEXT ,"
cCreateTable += "[debe] INTEGER ,"
cCreateTable += "[haber] INTEGER ) "
CreateTable()
User avatar
dragancesu
Posts: 920
Joined: Mon Jun 24, 2013 11:53 am
DBs Used: DBF, MySQL, Oracle
Location: Subotica, Serbia

Re: SQLITE3 FOREIGN KEYS ON EVITAR BORRADOS

Post by dragancesu »

SQLite has supported foreign key constraint since version 3.6.19

https://www.sqlitetutorial.net/sqlite-foreign-key/
Post Reply