cancellare i dati se non sono in relazione

neo996sps

Utente Attivo
31 Mag 2007
247
0
0
Trentino
Ciao a tutti,

ho un DB MySQL con due tabelle, da cui prelevo i dati in relazione tramite JOIN. Ora, vorrei far si che dalla tabella A non si possano cancellare i dati fintanto che nella tabella B ci sono degli elementi ad essa legati. Mi spiego meglio:

- ho un record composto da ID e nome nella tabella A
- ho un record composto da ID e file nella tabella B

io vorrei far si che se devo cancellare un record contenuto in A, non sia possibile se c'è una relazione verso B.

Come posso fare?
 
scusa, mancanza mia. Oltretutto ho apportato molte modifiche: Questa è la tabella documenti:

Codice:
CREATE TABLE IF NOT EXISTS `documenti` (
  `id` int(50) NOT NULL auto_increment,
  `titolo` varchar(255) NOT NULL,
  `categoria` int(3) NOT NULL,
  `allegato` varchar(255) NOT NULL,
  `archivia` int(1) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

questa è la tabella categoria_documenti:

Codice:
CREATE TABLE IF NOT EXISTS `categoria_documenti` (
  `id` int(11) NOT NULL auto_increment,
  `nome` varchar(255) NOT NULL,
  `logo` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

Questo è il codice della pagina PHP dove vado ad estrarre i documenti in base alla tabella categoria_documenti

PHP:
$res2 = mysql_query("
  SELECT documenti.id AS did, documenti.categoria, documenti.titolo, documenti.allegato, 
  categoria_documenti.id, categoria_documenti.nome, categoria_documenti.logo 
  FROM documenti, categoria_documenti 
  WHERE documenti.categoria = categoria_documenti.id 
  ORDER BY documenti.id desc;" );

Io voglio far si che dalla tabella categoria_documenti non si possa eliminare un record se questo è in relazione con un record contenuto nella tabella documenti.
 
ciao
immagino che la relazione sia tra
documenti.categoria <-> categoria_documenti.id
se è così quando decidi di eliminare una categoria_documenti ne prelevi l'id
poi fai una query su documenti where categoria=id, poi puoi utilizzare mysql_num_rows

if m_n_r > 0 non puoi eliminare
else sì
 
...
Io voglio far si che dalla tabella categoria_documenti non si possa eliminare un record se questo è in relazione con un record contenuto nella tabella documenti.

Se dai un'occhiata al link che ti ho postato vedrai come eseguire una CREATE o un'ALTRE TABLE con le restrizioni di cui hai bisogno.
 

Discussioni simili