Announcement

Collapse
No announcement yet.

"delete cascade" und multiplizieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • "delete cascade" und multiplizieren

    Hallo Gemeinde,

    Ich habe zwei Probleme mit Oracle bzw. Oracle mit mir.

    1.) Ich habe versch. Tabellen bezüglich Cocktails und deren Zutaten:
    Tabelle 1 = Cocktail (CocktailName, alkoholisch, Glas)
    Tabelle 2 = Zutat_Cocktail(ZutatName, CocktailName) <- CocktailName ist ein Fremdschlüssel der sich auf Tabelle 1 bezieht.
    Ich soll jetzt in Tabelle 1 alle Tupel löschen die "alkoholisch = yes" sind.
    Wenn ich jetzt: delete cascade from cocktail where alkoholisch = 'yes' durchführen möchte kommt dabei der Fehler: ORA-00933: SQL command not properly ended in...

    Ich habe bereits aus versch. anderen Quellen herrausgefunden das der
    DELETE CASCADE Syntax in Oracle gar nicht funktioniert. Wie lösche ich dann solche Einträge?

    EDIT: Der Syntax "on delete cascade" ist mir durchaus bekannt durch Recherche, um meine Frage zu verdeutlichen. Ist dies der einzige Weg solche Tupel zu löschen oder geht das nicht auch einfacher.
    So müsste ich ja jetzt erst mit alter talbe usw. das Attribut "on delete cascade" hinzufügen um dann die Einträge zu löschen.


    2.) Ich habe noch eine Tabelle Zutat(ZutatName, Menge) wobei Menge eine number ist. Ich soll jetzt laut Aufgabe alle Mengen verdoppeln. Hierzu habe ich noch gar keinen Ansatz wie ich dies bewerkstelligen soll.
    Einziger Versuch bisher war: Alter Table Zutat modify( Menge*2)
    Wie vermutet funktioniert dies allerdings nichts.
    Ich bin für jede Hilfe dankbar.

    EDIT: Okay, manchmal sieht man den Wald vor lauter Bäumen nicht. Hab es jetzt hinbekommen und es war dann doch so einfach:
    update zutat_cocktail set menge = menge * 2
    bzw.
    UPDATE 'table-name' SET 'column- name' = 'column-name' * 2


    Schöne Grüße aus dem sonnigen Osten (bei 30 Grad Datenbanken basteln, was will man mehr)
    Zuletzt editiert von Askaron001; 04.06.2011, 13:51.

  • #2
    Hallo,

    vielleicht ist das Design schon falsch.


    [highlight=sql]
    ALTER TABLE MODIFY CONSTRAINT FOREIGN KEY(refering table column_name) REFERENCES refered_table (column_name) ON DELETE CASCADE
    [/highlight]

    [highlight=sql]
    UPDATE zutaten SET menge= menge * 2
    [/highlight]

    Gruß

    Martin

    Comment

    Working...
    X