hoe cascade in orakel te gebruiken

create table loginDetails(
 userId   varchar(30),
 cellPhoneNo    varchar(10),    
 displayName  varchar(20),
 password   varchar(20),
 secretQuestion varchar(50),
 secretAnswer varchar(50),
 joiningDate    date,
 foreign key(userId) references userDetails(userId) on delete cascade on update cascade
);

de fout is gekomen op gebruik in orakel.

foreign key(userId) references userDetails(userId) on delete cascade on update

cascade                                                                       *

FOUT bij regel 9:   ORA-00907: rechter haakje ontbreekt

Deze query werkt aan MySQL maar werkt in oracle niet? alsjeblieft, vertel me alsjeblieft hoe het werkt in het orakel.

1
Om te beginnen is de syntaxis niet identiek tussen leveranciers (MySQL, Oracle, SQL Server, enz.). De "S" in "SQL" staat voor "Gestructureerd", helaas niet "Gestandaardiseerd". Hoewel ANSI eraan werkt om dat te verbeteren, zijn ondersteuning en prestaties niet altijd ideaal.
toegevoegd de auteur OMG Ponies, de bron

1 antwoord

Oracle ondersteunt geen trapsgewijze updates van primaire sleutels. De primaire sleutel zou zowel uniek als onveranderlijk moeten zijn, dus het zou nooit moeten veranderen. Aangezien u nooit een primaire sleutel zou moeten bijwerken, zou het niet nodig moeten zijn om die updates te cascade.

Over het algemeen zou u waarschijnlijk ook het gegevenstype VARCHAR2 moeten gebruiken in plaats van VARCHAR . Momenteel zijn die gegevenstypen identiek, maar Oracle kan de semantiek van het VARCHAR -type in de toekomst veranderen om ervoor te zorgen dat de lege reeks anders wordt behandeld dan NULL . Ervan uitgaande dat u niet wilt dat uw toepassing in de toekomst mogelijk breekt wanneer deze semantiek verandert, zou het veiliger zijn om VARCHAR2 te gebruiken.

2
toegevoegd