Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: SQL: Sql-kysymys

Sivun loppuun

Snifferi [26.08.2005 12:01:06]

#

Jos mulla on vaikka kaksi taulua "Artisti" ja "Levy". Levy-taulun viiteavain viittaa Artisti-taulun pääavaimeen. Tauluja käsitellään GUI:n kautta. Kun suorítetaan poistokäsky DELETE FROM Artisti WHERE artisti_nro=?, tuossa samassa käskyssä pitäisi siis poistaa Levy-taulusta viittaukset tohon Artisti-taulun dataan. CASCADE ei pelitä, se Levy-taulusta poisto pitäisi siis tohon samaan käskyyn ympätä.

Apina ei nyt keksinyt äkkiseltään tohon kunnolla toimivaa ratkaisua. Jeesatkaa vähän.

kasetti [26.08.2005 20:07:02]

#

mikä tietokanta? miksi CASCADE DELETE sääntö ei pelitä?

Snifferi [26.08.2005 20:15:36]

#

Ei vaan toimi tossa MySQL-kannan versiossa DELETE CASCADE. En muista tietokannan versiota.

exAtuu [27.08.2005 09:12:16]

#

SELECT VERSION();

Snifferi [27.08.2005 11:20:12]

#

4.0.24_Debian-10-log

FooBat [27.08.2005 15:34:42]

#

Minkä takia ei voi suorittaa kahta eri SQL-lausetta? Ei se ole sen hitaanpaa ja jos sen tekee transaktion sisällä ei tule mitään muutakaan ongelmaa.

DELETE FROM levy WHERE artisti_nro=?;
DELETE FROM artisti WHERE artisti_nro=?;

kasetti [27.08.2005 16:13:32]

#

Snifferi kirjoitti:

Ei vaan toimi tossa MySQL-kannan versiossa DELETE CASCADE. En muista tietokannan versiota.

Mysql:n versio 3.23.44 ja ylöspäin on toiminut nuo FK säännöt. Epäilempä että sinulla on käytössä MyISAM - engine tietokannassa ? (säännöt toimivat INNODB - enginen kanssa)

Snifferi [27.08.2005 16:13:56]

#

En nyt pääse kotoa siihen kantaan kiinni, mutta ainakin taulut on
INNODB -muotoa. En mä ihan tarkkaan tiedä, mitä se edes tarkottaa?

Mutta osaisko joku kertoa, kuinka tuo poisto tehdään yhdellä Sql-lauseella käyttäen taulujen yhdistämisehtoa?

FooBat, oon kokeillut tota sun ehdotusta, mutta ei...


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta