Autore Topic: Vincolo on delete cascade  (Letto 1612 volte)

Offline dessorry

  • Utente normale
  • ***
  • Post: 230
  • Who lived hoping died craping
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire HD
  • Play Store ID:
    dessorry
  • Sistema operativo:
    Windows, Ubuntu, Kubuntu
Vincolo on delete cascade
« il: 22 Ottobre 2010, 18:21:32 CEST »
0
Ho delle tabelle collegate tra loro come imposto la foreign key ed i vincoli on delete cascade?

grazie

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Vincolo on delete cascade
« Risposta #1 il: 22 Ottobre 2010, 18:46:32 CEST »
+1
Non sapevo rispondere, ma siccome ero interessato, ho cercato un po' su Google.

Da terminale mi sono trovato la versione di sqllite usata in android:
Codice: [Seleziona]
D:\dev_android\android-sdk-windows\tools>adb shell
# sqlite3 --version
sqlite3 --version
3.5.9

Poi sul sito di sqllite SQLite Foreign Key Support
Citazione
This document describes the support for SQL foreign key constraints introduced in SQLite version 3.6.19.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline dessorry

  • Utente normale
  • ***
  • Post: 230
  • Who lived hoping died craping
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire HD
  • Play Store ID:
    dessorry
  • Sistema operativo:
    Windows, Ubuntu, Kubuntu
Re:Vincolo on delete cascade
« Risposta #2 il: 22 Ottobre 2010, 18:50:04 CEST »
0
accedenti...perciò va fatto tutto a manovella!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Vincolo on delete cascade
« Risposta #3 il: 22 Ottobre 2010, 22:57:49 CEST »
0
accedenti...perciò va fatto tutto a manovella!

Usa un trigger!
Questo è il codice sql che cancella tutti gli ordini di un cliente quando quest'ultimo viene cancellato.

Codice: [Seleziona]
CREATE TRIGGER delete_ordine_cliente
BEFORE DELETE ON cliente
FOR EACH ROW BEGIN
        DELETE FROM ordine WHERE ordine.id_cliente = OLD._id;
END;

è da eseguire nell'onCreate del database (o nell'onUpdate nel caso è già esistente) dopo che crei la tabella cliente e ordine.
Per maggiori info: SQLite CVSTrac