Foros del Web » Creando para Internet » Flash y Actionscript »

Problema de base de datos, al borrar en cascada

Estas en el tema de Problema de base de datos, al borrar en cascada en el foro de Flash y Actionscript en Foros del Web. Hola Estoy con un proyecto con Adobe air, en as3, creo la base de datos mediante código sin problemas. Tengo dos tablas, una principal con ...
  #1 (permalink)  
Antiguo 04/02/2010, 14:07
 
Fecha de Ingreso: noviembre-2005
Mensajes: 186
Antigüedad: 19 años, 1 mes
Puntos: 1
Sonrisa Problema de base de datos, al borrar en cascada

Hola

Estoy con un proyecto con Adobe air, en as3, creo la base de datos mediante código sin problemas. Tengo dos tablas, una principal con un campo code como clave primaria y otra sencudaria a la que podemos llamar DetailTable, con varios campos en clave primaria, y quiero que al eliminar el campo code de la tabla principal, se elimine todas las filas de la tabla secundaría donde el campo code valga igual que el campo code de la tabla principal.

Esta es la sentencia que utilizo al crear las tablas:

var sql2:String = "CREATE TABLE IF NOT EXISTS MainTable (" +
" code INTEGER PRIMARY KEY AUTOINCREMENT, " +
" name TEXT, " +
" date DATE " +
" " +
")";

var sql3:String = "CREATE TABLE IF NOT EXISTS DetailTable (" +
" code INTEGER,position INTEGER, type INTEGER, " +
" path TEXT, document TEXT, " +
" PRIMARY KEY (code,position,type)" +
" FOREIGN KEY (codigo) REFERENCES Detallesecuencia(codigo) ON DELETE CASCADE " +
")";

pues bien, luego una vez creadas, insertado los datos, Me conecto (pongo el código de conexión sin problemas, borro una fila, de la tabla principal, por ejemplo la fila con code=4, se puede ver en el código que pongo acontinuación, pero no sé borra ni una fila de la tablaSecundaria con code=4 ¿por qué?

Código:
// Dentro de una clase

private var conn:SQLConnection;

public function constructorClass(){
conn = new SQLConnection();
ConexionBD();
}

function ConexionBD() {

			conn.addEventListener(SQLEvent.OPEN, openHandler);
			conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
			var dbFile:File=File.applicationDirectory.resolvePath("mydatabase.db");
			conn.openAsync(dbFile, SQLMode.UPDATE);
		}

function deleteRow(){
			selectData:SQLStatement = new SQLStatement();
			selectData.sqlConnection=conn;
			selectData.text="DELETE FROM MainTable WHERE code = :param1";
			selectData.addEventListener(SQLEvent.RESULT, resultHandler);
			selectData.addEventListener(SQLErrorEvent.ERROR, errorHandler);

			//delete row in MainTable with code=4, but not delete all rows in DetailTable with code=4
			selectData.parameters[":param1"]=4;
			
			selectData.execute();
		}
Saludos
  #2 (permalink)  
Antiguo 04/02/2010, 14:08
 
Fecha de Ingreso: noviembre-2005
Mensajes: 186
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: Problema de base de datos, al borrar en cascada

Cita:
Iniciado por Dav1d Ver Mensaje
Hola

Estoy con un proyecto con Adobe air, en as3, creo la base de datos mediante código sin problemas. Tengo dos tablas, una principal con un campo code como clave primaria y otra sencudaria a la que podemos llamar DetailTable, con varios campos en clave primaria, y quiero que al eliminar el campo code de la tabla principal, se elimine todas las filas de la tabla secundaría donde el campo code valga igual que el campo code de la tabla principal.

Esta es la sentencia que utilizo al crear las tablas:

var sql2:String = "CREATE TABLE IF NOT EXISTS MainTable (" +
" code INTEGER PRIMARY KEY AUTOINCREMENT, " +
" name TEXT, " +
" date DATE " +
" " +
")";

var sql3:String = "CREATE TABLE IF NOT EXISTS DetailTable (" +
" code INTEGER,position INTEGER, type INTEGER, " +
" path TEXT, document TEXT, " +
" PRIMARY KEY (code,position,type)" +
" FOREIGN KEY (codigo) REFERENCES Detallesecuencia(codigo) ON DELETE CASCADE " +
")";

pues bien, luego una vez creadas, insertado los datos, Me conecto (pongo el código de conexión sin problemas, borro una fila, de la tabla principal, por ejemplo la fila con code=4, se puede ver en el código que pongo acontinuación, pero no sé borra ni una fila de la tablaSecundaria con code=4 ¿por qué?

Código:
// Dentro de una clase

private var conn:SQLConnection;

public function constructorClass(){
conn = new SQLConnection();
ConexionBD();
}

function ConexionBD() {

			conn.addEventListener(SQLEvent.OPEN, openHandler);
			conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
			var dbFile:File=File.applicationDirectory.resolvePath("mydatabase.db");
			conn.openAsync(dbFile, SQLMode.UPDATE);
		}

function deleteRow(){
			selectData:SQLStatement = new SQLStatement();
			selectData.sqlConnection=conn;
			selectData.text="DELETE FROM MainTable WHERE code = :param1";
			selectData.addEventListener(SQLEvent.RESULT, resultHandler);
			selectData.addEventListener(SQLErrorEvent.ERROR, errorHandler);

			//delete row in MainTable with code=4, but not delete all rows in DetailTable with code=4
			selectData.parameters[":param1"]=4;
			
			selectData.execute();
		}
Saludos
  #3 (permalink)  
Antiguo 04/02/2010, 14:20
 
Fecha de Ingreso: febrero-2002
Ubicación: Guadalajara
Mensajes: 103
Antigüedad: 22 años, 10 meses
Puntos: 0
Respuesta: Problema de base de datos, al borrar en cascada

Hola
y si borras el registro directamente de la base de datos ¿tampoco te borra los de la tabla secundaria?

Etiquetas: borrar, cascada
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:16.