2016-10-02 4 views
0

ich eine Tabelle Receipt mit columnsnWie ein Spalten innerhalb derselben Tabelle verweisen

| ORNUMBER | Description | Quantity | Date | 

Ich möchte meine Quantity und Date Spalten Description verweisen.

Zum Beispiel ließ ich die Spalte Description sowohl die Quantity und Date auch

fallen gelassen werden Was ist das Skript für das? Vielen Dank!.

+0

Ich weiß nicht genau, was Sie fragen. Es gibt keinen Befehl, der eine (vollständige) Spalte automatisch löscht, wenn Sie eine andere Spalte löschen (und das wird auch nie der Fall sein, da Sie dies leicht manuell tun können). Wenn Sie eine Säule fallen lassen, müssen Sie sie vollständig aus dem Tisch entfernen, meinen Sie das wirklich? Meinen Sie vielleicht, dass Sie die Zeile löschen möchten, wenn Sie die Zeile ändern (z. B. "null")? Oder möchten Sie vielleicht die Werte 'Quantity' und' Date' auch 'null' einstellen, wenn Sie' Description' auf 'null' setzen? Vielleicht könnten Sie einige Beispieldaten hinzufügen, um zu beschreiben, was Sie zu tun versuchen. – Solarflare

+0

Ich nehme an, dass Sie Menge und Datum automatisch auf Null setzen möchten, wenn Description auf Null gestellt wird, oder? Ich denke, [Trigger] (https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000931.html) ist, was Ihnen helfen kann deine Aufgabe – siarheib

Antwort

0


Hallo,
Unten ist die Prozedur, die Sie verwenden können,

BEGIN 
ALTER TABLE Receipt DROP COLUMN Description; 
END; 

DECLARE 
    del_columns INTEGER; 
BEGIN 
    SELECT COUNT(*) 
     INTO del_columns 
     FROM dba_tab_columns 
     WHERE OWNER = 'user_name' 
     AND table_name = 'Receipt' 
     AND column_name = 'Description' 
IF(del_columns = 0) 
THEN 
    EXECUTE IMMEDIATE 'ALTER TABLE Receipt DROP column Quantity, Date; 
END IF; 
END; 

explination

  • In der ersten beginnen Anweisung, Spalte Beschreibung
  • Im zweiten gelöscht Anweisung, ein temporärer ganzzahliger Wert del_column in
  • deklariert
  • Von dem Systemtabelle, Tabellennamen und Spaltennamen wird als Bedingung erklärt und die Graf

  • Wenn die Zahl 0 angezeigt wird, dann Beschreibung Spalte nicht zur Verfügung und dann andere zwei andere Spalten werden gelöscht. Wenn Sie 1 zu bekommen, dann ist diese Spalte zur Verfügung und zwei weitere Spalten nicht

  • Sie können auch all_tab_columns Tabelle in der where Bedingung verwenden gelöscht werden, die die Tabelle alle Namen bietet abgesehen davon, dass Benutzer sie es ist super user
  • Stellen Sie sicher, dass Sie den Namen Ihres Besitzers in der Where-Bedingung angeben.
Verwandte Themen