Was macht den Befehl ALTER TABLE? MySQL-Referenzhandbuch. Beispielal ALTER-Befehle in SQL

Letzte Aktualisierung: 07/09/2017

Möglicherweise möchten wir irgendwann den bereits vorhandenen Tisch ändern. Hinzufügen oder Löschen von Spalten, ändern Sie den Typ der Spalten, fügen Sie Einschränkungen hinzu oder löschen Sie die Einschränkungen. Das heißt, Sie müssen die Definition des Tisches ändern. Alter Tabellenausdruck wird verwendet, um Tabellen zu wechseln.

Die allgemeine formale Syntax des Befehls lautet wie folgt:

ALTER TABLE NAME_TABLE (Hinzufügen von NAME_STOLBETTY_DATA_STOLBITS [Attributs_stolbets] | Drop-Spalte_STOLBETS_NAME | Alter Spaltenname_STOLBET Typ_DATA_STOLBETS | Definition Definieren hinzufügen | Drop-Programmnierungsname)

Mit der ALTER-Tabelle können wir somit die unterschiedlichsten Szenarien zum Ändern der Tabelle wenden. Betrachten Sie einige von ihnen.

Hinzufügen einer neuen Spalte

Fügen Sie einer neuen Spaltenadresse an die Tabellenkunden hinzu:

ALTER TABLE-Kunden addieren Adresse nvarchar (50) null;

In diesem Fall hat die Adressspalte einen NVARCHAR-Typ und das Null-Attribut ist dafür definiert. Aber was ist, wenn wir eine Spalte hinzufügen müssen, die keine Nullwerte erstellen sollte? Wenn die Tabelle Daten enthält, wird der folgende Befehl nicht ausgeführt:

Alter Tabelle Kunden addieren Adresse nvarchar (50) nicht null;

In diesem Fall besteht in diesem Fall die Lösung darin, den Standardwert über das Standardattribut zu installieren:

ALTER TABLE-Kunden addieren Adresse nvarchar (50) nicht null Standard "unbekannt";

Wenn in diesem Fall die Tabelle bereits Daten enthält, werden für sie für die Adressspalte dem "Unbekannten" hinzugefügt.

Entfernung der Säule

Entfernen Sie die Adressspalte von der Kundentabelle:

Ändern Sie die Tabellenkunden Drop-Spaltenadresse;

Ändern der Spalte Art der Spalte

Ändern Sie den Kundendatentabellendatentyp in der Spalte der Vornamen auf NVARCHAR (200):

ALTER TABELLE KUNDEN ÄNDERN SÄHREND ERSTE NAME NAME NVARCHAR (200);

Hinzufügen von Check-Einschränkungen.

Bei der Hinzufügung von Einschränkungen prüft SQL Server automatisch die verfügbaren Daten zur Einhaltung der Einschränkungen. Wenn die Daten nicht den Einschränkungen entsprechen, werden solche Einschränkungen nicht hinzugefügt. Installieren Sie zum Beispiel das Alter\u003e 21-Einschränkung für die Alterspalte in der Tabelle des Kunden.

ALTER TABELLE Kunden hinzufügen Check (Alter\u003e 21);

Wenn in der Tabelle Zeilen gibt, in denen die Altersspalte die Werte hat, die für diese Einschränkung unangemessen sind, endet der Befehl SQL mit einem Fehler. Um eine solche Compliance-Prüfung zu vermeiden und trotzdem ein Limit hinzuzufügen, trotz dessen Anwesenheit von Daten unangemessen ist der Ausdruck von Nocheck verwendet:

ALTER TABELLE KUNDEN MIT NOCHECK Fügen Sie den Check hinzu (Alter\u003e 21);

Standardmäßig ist der Wert des Checks, der auf die Einhaltung der Einschränkungen prüft.

Hinzufügen eines externen Schlüssels

Lassen Sie zwei Tabellen in der Datenbank in der Datenbank hinzugefügt, nicht verbunden:

Erstellen von Tabellenkunden (ID INT Int Primärkennzeichen Identität, Alter Int Standard 18, Vorname Nvarchar (20) Nicht Null, Nachname nvarchar (20) nicht , E-Mail-Varchar (30) einzigartig, Telefon varchar (20) einzigartig); Erstellen von Tabellenbestellungen (ID INT-Identität, CustomerID Int, erstelltat Datum);

Fügen Sie der CustomerID-Kundenn-Spalte eine externe Schlüsselbeschränkung hinzu:

ALTER TABELLE Bestellungen Fügen Sie den Fremdschlüssel hinzu (CustomerID) Referenzen Kunden (ID);

Hinzufügen eines Primärschlüssels

Fügen Sie der obigen Tabelle oben definierte Bestellungen den primären Schlüssel für eine Spalten-ID hinzu:

ALTER TABLE-Bestellungen Primärschlüssel hinzufügen (ID);

Hinzufügen von Konfigurationen mit Namen

Beim Hinzufügen von Einschränkungen können wir mit der Anweisung CONSTRAINT einen Namen angeben, wonach der Grenzname angezeigt wird:

ALTER TABLE Bestellungen hinzufügen Beschränkung PK_ORDERS_ID-Primärschlüssel (ID), CONSTRAINT FK_ORDERS_TO_CUKOMERS Fremdschlüssel (CustomerID) Referenzen Kunden (ID); ALTER TABELLE Kunden hinzufügen CONSTRAINT CK_AGE_GREATER_THAN_ZERO-Check (Alter\u003e 0);

Entfernung von Einschränkungen.

Um Einschränkungen zu entfernen, müssen Sie ihren Namen kennen. Wenn wir den Namen der Einschränkung definitiv nicht kennen, kann es über SQL Server Management Studio gefunden werden:

Übersehen Sie die Tabelle der Tabellen in das Tastenjournal, können Sie die Namen der Einschränkungen der primären und externen Schlüssel sehen. Die Namen der Einschränkungen der externen Schlüssel beginnen mit "FK". Und in den Einschränkungen Pierce können Sie alle Einschränkungen von Check and Default finden. Überprüfen Sie die Restriktionsnamen mit "CK" und Standardeinschränkungen - mit "DF".

Wie Sie beispielsweise im Screenshot in meinem Fall sehen können, wird der Name der externen Schlüsseleinschränkung in der Originaltabelle "FK_ORDERS_TO_CUKOMERS" bezeichnet. Um einen externen Schlüssel zu entfernen, kann ich den folgenden Ausdruck verwenden:

ALTER TABLE-Bestellungen Drop FK_ODERS_TO_CUSTOMERS;

Wenn es in Ihrem Projekt in Ihrem Projekt gibt, deren Größe von Gigabytes berechnet wird, und um die Struktur einer solchen Tabelle zu ändern, müssen Sie alle Dienstleistungen mehrere Stunden aufhalten - dieser Artikel wird für Sie sein.

Gegeben: Tabelle mehrerer Dutzend Gigabytes Daten. Die Aufgabe besteht darin, die Struktur des Tisches zu ändern.

Sofort vorne laufen, funktioniert das Verfahren nur auf Transaktionstabellen. Wenn Sie einen Myisam-Tisch für Zehner von Gigabytes haben, dann wie in dieser Anekdote "Umgang mit Ihnen mit Ihren Problemen." Das Beispiel wird für die Innodb-Tabelle angegeben.

Angenommen, die Struktur unseres Tischs ist dies:

Erstellen Sie Tabelle "Benutzer" (ID `Int (11) nicht null Auto_increment,` Email 'varchar (40) nicht NULL-Standardeinstellung "", `password_hash` char (32) nicht Null Default "", `registration_date` int (11) nicht NULL-Standardeinstellung "0", Primärschlüssel (ID`)) Motor \u003d Innodb Standard Charset \u003d UTF8
Wir möchten das Last_Login-Feld in diese Tabelle hinzufügen.

Welche Optionen haben wir?

Frontal

ALTER TABLE` Users` Säulen Sie die Spalte `last_login` int (11) nicht Null-Standardeinstellung 0;
Die Option macht sich perfekt in kleinen Projekten, in denen die Größe der Tabellen selten 50.000 Einträge überschreitet. Wir passen nicht zur Option. Alter wird zu lang durchgeführt und all diese Zeit wird die Tabelle sowohl bei der Aufnahme als auch beim Lesen blockiert. Dementsprechend muss der Dienst zu diesem Zeitpunkt aufhören.

Schalten Sie das Gehirn ein

Sie können den Tisch im Allgemeinen berühren, sobald es abgelaufen ist, und erstellen Sie ein separates "User_lastvisits":
Erstellen Sie Tabelle `user_lastvisits` (` user_id` int (11) nicht , `last_login` int (11) nicht null Standardeinstellung" 0 ", Primärschlüssel (` user_id`)) Motor \u003d Innodb Standard Charset \u003d utf8;
Jetzt können Sie in allen Anfragen, in denen Sie ein Last_Login benötigen, um mit der Tabelle Last_Login zusammenzuschließen. Sie werden natürlich funktionieren, langsamer, und in Abfragen werden auch zu viel Zeit hinzugefügt, aber im Allgemeinen passiert es manchmal genug und Sie können an diesem Punkt anhalten.

Und doch müssen Sie ein Feld hinzufügen

Sie können die Master-Slave-Replikation anheben, ändern Sie ALTER auf dem Slave-Server und ändern Sie sie dann an Orten. Um ehrlich zu sein, habe ich nie so gearbeitet, vielleicht ist es einfacher der folgende Weg, aber es ist nicht immer möglich, die Replikation zu erhöhen.

Mein Weg ist der folgende

Erstellen Sie eine neue Tabelle mit der endgültigen Struktur, wir machen Auslöser auf der ersten Tabelle, die sich bei allen Änderungen anmeldet, während gleichzeitig Daten von der ersten Tabelle auf den zweiten und am Ende "Gießen" die geändert werden Daten und benennen Sie die Tabellen um.

Also bereiten wir 2 Tabellen her - die erste mit der gewünschten Struktur, die zweite, um Änderungen anzumelden.
Erstellen Sie Tabelle `_USERS` (ID` int (11) nicht null Auto_increment, `Email 'varchar (40) nicht Null Standard" ",` password_hash `char (32) nicht Null Standard" ",` Registry_Date `int (11) nicht NULL-Standardeinstellung "0", `astvisit` int (11) nicht NULL-Standard 0, Primärschlüssel (`ID`)) Motor \u003d Innodb Standard Charset \u003d UTF8; Tabelle erstellen `user_updated_rows` (id` int (11) nicht null auto_increment,` row_id` int (11) nicht null Standard "0", `Action` Enum (" Aktualisiert "," gelöscht ") nicht Null-Standard-Standard" Updated ", Primärschlüssel (`ID")) Motor \u003d InnoDB Standard Charset \u003d utf8;
Wir setzen Trigger:
Trennzeichen ;; Erstellen Sie den Trigger-Users_After_Delete, nachdem Sie auf Benutzer für jede Zeile gelöscht werden, starten Sie in die Werte des Benutzers_Updated_rows (0, old.id, "gelöscht"). Ende ;; Erstellen von Trigger Users_After_Insert nach dem Einfügen von Anwendern für jede Zeile beginnen in die Werte des Benutzers_Updated_rows (0, new.id, "aktualisiert"); Ende ;; Erstellen Sie den Trigger Users_After_Update nach dem Update auf Benutzer für jede Zeile beginnen, wenn (alt.id! \u003d New.id), dann in den Benutzer einfügen_updated_Rows Vales (0, Old.ID, "gelöscht"); Enden, wenn; Insert in den Benutzer_Updated_Rows Vales (0, NEW.ID, "aktualisiert"); Ende ;; Trennzeichen;
Jetzt starten wir den Überlauf. Dazu müssen Sie 2 Verbindungen mit der Datenbank öffnen. In einem wird der überlaufende Überlauf erleichtert, in der anderen müssen Sie den Tisch für den Eintrag blockieren.
MySQL\u003e Sperrtabellen Benutzer schreiben; Abfrage OK, 0 ROWs betroffene (0,00 sec) mysql\u003e - Trigger müssen bereits MySQL\u003e Truncate Users_Updated_rows installiert werden. Abfrage OK, 0 ROWs betroffen (0,17 sec) mysql\u003e - in einer anderen Konsole, lass den MySQL\u003e Insert in _USERS-ID, E-Mail, password_hash, registration_date, 0 von den Benutzern auswählen. MySQL\u003e - Wieder in der ersten Konsole MySQL\u003e Entsperren Sie Tabellen;
Alles, während der Tisch überfliegt wird, haben wir Zeit, darüber nachzudenken, wie er die Daten eingossen, um die Daten aus dem Moment an den Startstart zu gießen. Hier wird ich im Allgemeinen nichts schwierig mitbringen - ich bringe das Skript nicht mit, Sie müssen nur einen Eintrag von der Tabelle des Benutzers_updated_rows in der Reihenfolge in der Reihenfolge einnehmen, in der sie hinzugefügt werden (sortieren nach dem Primärschlüssel) und aktualisieren oder löschen Sie es in der _users-Tisch;

Die Transfusion des Tisches ist also bereits beendet, Sie müssen andere Daten eingießen. Führen Sie das Skript aus. Das Skript sollte ständig arbeiten und alle Datensätze aktualisieren, die dem Protokoll hinzugefügt werden, wenn er alle Daten durchbricht, die Sie benötigen, um Tabellen umbenennen zu können:
MySQL\u003e Truncate user_updated_rows; Abfrage OK, 0 Zeilen betroffen (0,16 sec) mysql\u003e Benennen von Tabellenbenutzern auf __users, _users an Benutzer; Abfrage OK, 0 ROWs betroffen (0,11 Sekunden)
Es ist erwähnenswert, dass in diesem Moment ein kleiner Datenverlust möglich ist. Anfragen sind nicht atomal. Wenn es kritisch ist, ist es besser, den Dienst für eine Weile auszuschalten, dass es keine Wünsche für eine Änderung gab. Sie können die Rechte abholen, um vom Benutzer zu schreiben und Befehle unter einem anderen Benutzer auszuführen.

Wenn Sie alles richtig machen, gehen die Daten nicht verloren, und es gibt fast keine Pausen im Service. Was wir brauchten Auf dieselbe Weise können Sie die Daten an einen anderen Server weitergeben, nur die Übersetzungsmethode wird geändert. Stattdessen
MySQL\u003e Einfügen in _users Wählen Sie ID, E-Mail, Password_Hash, Registration_date, 0 von den Benutzern;
Sie müssen durch MySqldump gießen:
$ Mysqldump -h host1 dB-Benutzer --Singer-Transaction -Ecqq | PV | Mysql -h host2.
Auf diese Weise konnte ich aufhalten, ohne den Betrieb der Dienste auf eine andere Servertabelle mit einer Größe von 60 GB und 400 Millionen Linien irgendwo in 12 Stunden anzuhalten.

Übrigens wurde das Fahrrad bereits von Facebook erfunden und wird angerufen

Ändern Sie Tabelle - Tabellendefinition ändern

Syntax

ALTER TABLE [IF existieren] [Nur] Name [ * ] Handlung [, ...] ALTER TABLE [IF existieren] [Nur] Name [*] Umbenennen [Spalte] Namestolbitsa. Zu. New_imia_stolbtsy. ALTER TABLE [IF existieren] [Nur] Name [*] Umbenetzte Programmname Zu. Name Name ALTERTABLE [IF existieren] Name Umbenennen. neuer Name ALTERTABLE [IF existieren] Name Einstellen Sie das Schema. New_shem. ALTER TABELLE ALLEN IN DEASPACE Name [Gehört. Roly Name [, ...]] Set Tablespace New_tabl_space. [Nowait] Wo Handlung Kann wie folgt sein: [Spalte] hinzufügen [falls nicht existieren] Namestolbitsa. Type_data. [Collate Regel_sortion. ] [ Restriction_stolbets. [...]] Drop [Spalte] [falls vorhanden] Namestolbitsa. [Beschränken | Cascade] Ändern Sie [Spalte] Namestolbitsa. [Daten festlegen] Typ Type_data. [Collate Regel_sortion. ] [Benutzen Ausdruck ] Ändern Sie [Spalte] Namestolbitsa. Standard setzen. Ausdruck Ändern Sie [Spalte] Namestolbitsa. DROPFALL DEFAULT ALTER [Spalte] Namestolbitsa. (Set | Drop) Nicht null Alter [Spalte] Namestolbitsa. Statistik einstellen ganze Zahl Ändern Sie [Spalte] Namestolbitsa. Einstellen ( Attribut = Wert [, ...]) Ändern Sie [Spalte] Namestolbitsa. Zurücksetzen ( Attribut [, ...]) Ändern Sie [Spalte] Namestolbitsa. Lagerung einstellen (einfach | extern | erweitert | main) hinzufügen Restriction_Table. [Nicht gültig] Hinzufügen Ändern Sie die Einschränkung. Programmname [Defastbar | Nicht deaktivierbar] [anfänglich aufgeschoben | Anfänglich unmittelbar] Überprüfung der Einschränkung Programmname Drop-Einschränkung [falls vorhanden] Programmname [Beschränken | Cascade] Deaktivieren Sie den Trigger [ Name_trigger. | Alles | Benutzer] Aktivieren Sie den Trigger [ Name_trigger. | Alles | Benutzer] Aktivieren Sie den Replikat-Trigger Name_trigger. Aktivieren Sie immer auslösen. Name_trigger. Regel deaktivieren. Name_porivila_peep. Regel aktivieren. Name_porivila_peep. Replikationsregel aktivieren. Name_porivila_peep. Aktivieren Sie immer Regel. Name_porivila_peep. Deaktivieren der Reihenpegel-Sicherheit Aktivieren Sie die Reihenfolge der Reihenfolge der Sicherheitsstärke-Reihenpegel-Sicherheits-Sicherheits-Kein-Zeilenebene Sicherheits-Cluster auf Name_Index. Set mit dem Cluster-Set mit OIDS-Set ohne OIDs-Set-Tabellensicherung New_tabl_space. Set (protokolliert | unklargert) Set ( Parameter_She Tatsache = Wert [, ...]) Zurücksetzen ( Parameter_She Tatsache [, ...] erben Tabelle_rodel. Kein Erben. Tabelle_rodel. Von. Name Nicht von Eigentümer zu ( New_vladeller. | Current_user | Session_User) Replik-Identität (Standard | Verwendung Index Name_Index. | Voll | Nichts) und Restriction_table_p_index.: [Zwang. Programmname ] (Einzigartig | Primärschlüssel) mit Index Name_Index. [Defastbar | Nicht deaktivierbar] [anfänglich aufgeschoben | Anfangs unmittelbar]

Beschreibung

Alter Tabelle ändert die Definition eines vorhandenen Tisches. Es werden unten mehrere Sorten beschrieben. Beachten Sie, dass verschiedene Sperrniveaus für verschiedene Sorten erforderlich sein können. Wenn anders anders angegeben, ist der Zugangsausschluss erforderlich. Bei der Auflistung mehrerer Unterkombinationen wird die stärkste Sperre von der erforderlichen von ihnen angefordert.

Spalte hinzufügen [falls nicht existieren]

Dieses Formular fügt der Tabelle eine neue Spalte mit derselben Syntax wie Tabelle hinzu. Wenn, wenn nicht vorhanden, und eine Spalte mit einem solchen Namen bereits vorhanden ist, ist es kein Fehler. Drop-Säule [falls vorhanden]

Dieses Formular löscht eine Spalte aus der Tabelle. Dadurch wird automatisch Indizes und Einschränkungen der mit dieser Spalte verknüpften Tabelle entfernt. Wenn Objekte von dieser Spalte außerhalb dieser Tabelle abhängig sind, z. B. externe Schlüssel oder Ansichten, löschen und Sie können die spezifizierende Kaskade hinzufügen. Wenn der Befehl angibt, ob vorhanden, und diese Spalte nicht vorhanden ist, wird es nicht als Fehler angesehen, stattdessen wird ein Kommentar einfach ausgegeben. Datentyp einstellen

Dieses Formular ändert den Typ der Spalte des Tisches. Indexe und einfache tabellarische Einschränkungen, einschließlich dieser Spalte, werden automatisch umgerechnet, um einen neuen Spaltentyp zu verwenden, der ihren Ausdruck neu ständig definiert. Optionales Collate-Angebot setzt die Sortierregel für eine neue Spalte ein. Wenn es weggelassen ist, wird die Standardsortierregel für einen neuen Typ ausgewählt. Die optionale Verwendung des Vorschlags bestimmt, wie der neue Wert der Säule von dem Alten erhalten wird; Wenn es fehlt, wird der Standardtyp als übliche Zuordnung des Werts des alten Typs neu ausgeführt. Die Verwendung des Vorschlags wird obligatorisch, wenn implizite Einstellungen oder Zuordnung mit der Einführung eines alten Typs zu einem neuen nicht definiert ist. SET / Drop-Standardeinstellung

Diese Formulare werden standardmäßig für Säulen angegeben oder gelöscht. Standardwerte gelten nur für nachfolgende Einfügen- oder Update-Befehle. Ihre Änderungen werden in den bereits vorhandenen Zeilen nicht in der Tabelle reflektiert. Set / Drop nicht null

Diese Formulare werden bestimmt, ob die Spalte NULL-Werte annimmt oder nicht. Sie können bestimmte Null nicht nur null angeben, wenn die Spalte keine Nullwerte enthält. Statistik einstellen

Dieses Formular setzt die Säulenstatistiken, die das Wahrzeichen der Analysevorgänge sammeln. Bereich der zulässigen Referenzwerte: 0..5000; AT -1 ist der Standard-Systemwert angewendet (default_statistics_target). Weitere Informationen zur Verwendung von Statistics Postgres Pro Query-Scheduler finden Sie in Abschnitt 14.2.

Set Statistikanfragen Share Update Exclusive-Sperre. Einstellen ( Attribut = Wert [, ... ])
Zurücksetzen ( Attribut [, ... ])

Dieses Formular setzt oder setzt die Attributparameter ein. Derzeit sind die einzigen Parameter der Attribute n_distinct und n_distututd_bherited, die die Schätzung der Anzahl der Menge an Quantity_Names überschreiben, wodurch die anschließenden Analysevorgänge vorgenommen werden. Das N_Distinct-Attribut beeinflusst die Berechnung der Statistiken entlang der Tabelle selbst, und n_Distinct_Beritherited ist auf den Statistiken auf dem Tisch und seinen Nachkommen. Wenn der angegebene Wert positiv ist, greift Analyse davon aus, dass die Spalte enthält, dass diese Anzahl verschiedener Werte nicht null ist. Wenn der angegebene Wert negativ ist (es muss größer oder gleich oder gleich -1 sein), wird angenommen, dass die Anzahl der verschiedenen Werte in der Säule nicht null linear von der Größe des Tisches abhängt; Die genaue Anzahl wird erhalten, indem die ungefähre Größe der Tabelle auf den absoluten Wert des Parameters multipliziert wird. Beispielsweise wird an -1 angenommen, dass alle Werte in der Spalte unterschiedlich sein und bei -0,5 - dadurch, dass jeder Wert zweimal wiederholt wird. Dies kann nützlich sein, wenn sich die Größe der Tabelle im Laufe der Zeit ändert, da die Multiplikation auf die Anzahl der Zeilen in der Tabelle nur während der Abfrageplanung erfolgt. C 0 Die Anzahl der verschiedenen Werte wird wie gewohnt geschätzt. Weitere Informationen zur Verwendung von Statistics Postgres Pro Query-Scheduler finden Sie in Abschnitt 14.2.

Share Update Exclusive-Sperre wird aufgefordert, Attributparameter zu ändern. Speicherplatz einstellen

Dieses Formular legt den Spaltenspeichermodus fest. Es definiert, ob die Daten in der Tabelle oder in einem separaten Toast-Tisch gespeichert sind, sowie ob sie komprimiert werden. Der Gleitmodus sollte für Werte mit fester Länge verwendet werden, wie z. B. Ganzzahl; Dies ist eine Speicheroption innen ohne Komprimierung. Der Hauptmodus wird für die Speicherung innen verwendet, jedoch komprimierte Daten, external - für die externe Speicherung unkomprimierter Daten und erweitert - für die externe Speicherung komprimierter Daten. Erweitert wird standardmäßig für die meisten Datentypen verwendet, die den Speicher nicht einfach sind. Die Verwendung von extern ermöglicht es Ihnen, Vorgänge mit dem Substring mit sehr großen Text- und Bytea-Werten aufgrund des Verlusts des Volumens des Repositorys zu beschleunigen. Beachten Sie, dass der eingestellte Speichervorschlag selbst nichts in der Tabelle ändert, sondern nur eine Strategie verlangt, die mit zukünftigen Änderungen in der Tabelle umgesetzt wird. Weitere Informationen finden Sie in Abschnitt 62.2. Hinzufügen. Restriction_Table. [Ungültig]

Dieses Formular fügt der Tabelle eine neue Beschränkung hinzu, mit derselben Syntax als Erstellentabelle und eine zusätzliche Anzeige von nicht gültig, die derzeit nur den externen Schlüsseleinschränkungen einschränken darf. Wenn die Einschränkung als nicht gültig markiert ist, ist eine möglicherweise langfristige Erstprüfung dessen, was alle Linien erfüllen, übersprungen wird. Trotzdem ist diese Einschränkung bei nachfolgenden Ergänzungen oder Datenänderungen gültig (dh diese Vorgänge werden nicht ausgeführt, wenn die neue Zeile den Scan-Grenzbedingungszustand verletzt, oder in Anwesenheit eines externen Schlüssels gibt es keine entsprechende Linie in der Haupttabelle). Die Datenbank nimmt jedoch nicht davon aus, dass die Einschränkung für alle Reihen des Tisches ausgeführt wird, bis er mit der Anweisung Validate Constraining-Anweisung überprüft wird. Hinzufügen. Restriction_table_p_index.

Dieses Formular fügt der Tabelle auf der Grundlage eines vorhandenen einzigartigen Index einen neuen Primärschlüssel oder eindeutige Einschränkungen hinzu. Diese Einschränkung enthält alle Spalten dieses Index.

Der Index kann nicht teilweise sein und Säulenausdrücke enthalten. Darüber hinaus sollte es ein Index-B-Baum mit Standard-Sortierreihenfolge sein. Mit solchen Einschränkungen unterscheiden sich die hinzugefügten Indizes nicht von den von den üblichen Teams des Primärschlüssels erstellten Indizes und fügen eindeutig hinzu.

Wenn in dem Primärschlüssel die Indexspalten noch nicht als NULL gekennzeichnet sind, versucht dieser Befehl, dass dieser Befehl nicht für jede Spalte nicht null auszuführen. Dies erfordert einen vollständigen Scan der Tabelle, um sicherzustellen, dass die Spalte nicht NULL enthalten. In allen anderen Fällen ist dies ein schnelles Betrieb.

Wenn der Grenzname angegeben ist, wird der Index umbenannt und den angegebenen Namen empfangen. Andernfalls ist der Name des Index der Grenzname.

Nachdem Sie diesen Befehl ausgeführt haben, wird der Index "Zugehörigkeit" Begrenzen Sie, als ob es vom üblichen Team erstellt wurde, den primären Schlüssel hinzufügen oder einzigartig hinzufügen. Dies bedeutet insbesondere, dass beim Entfernen der Einschränkung der Index mit ihm entfernt wird.

Hinweis

Das Hinzufügen einer Einschränkung auf der Grundlage eines bestehenden Index ist in Situationen nützlich, in denen eine neue Einschränkung erforderlich ist, um die Änderung der Änderungen in der Tabelle lange Zeit hinzuzufügen. Dazu können Sie den Create Index gleichzeitig den Befehlsindex erstellen und dann mit diesem Eintrag als vollständige Grenze verwenden. Siehe das folgende Beispiel.

Ändern Sie die Einschränkung.

Dieses Formular ändert die Attribute der zuvor erstellten Grenze. Derzeit können Sie nur die externen Schlüsselbeschränkungen ändern. Beschränkungen bestätigen

Dieses Formular prüft die externe Key-Einschränkung oder das zuvor erstellte Testlimit, das früher nicht gültig ist, und scannen Sie die gesamte Tabelle, um sicherzustellen, dass alle Zeilen die Einschränkung erfüllen. Wenn die Einschränkung bereits als wahr markiert ist, passiert nichts.

Die Überprüfung großer Tabellen kann ziemlich lang sein. Die Bedeutung der Trennung der Überprüfung durch die tatsächliche Erstellung der Einschränkung besteht darin, dass Sie die Überprüfung einer Weile von weniger Tätigkeiten verschieben oder zusätzliche Arbeiten mit vorhandenen Fehlern durchführen können und gleichzeitig neue Arbeiten verhindern. Beachten Sie, dass bei der Implementierung der Überprüfung selbst die Ausführung normaler Aufzeichnungsbefehle in der Tabelle nicht beeinträchtigt.

Bei der Überprüfung wird nur das Blockieren des Share-Aktualisierungs-Exclusive-Zieltabellens angefordert. Für die externen Schlüsseleinschränkungen ist der Zeilenanteil auch in der Tabelle erforderlich, in der sich die Einschränkung bezieht. Drop-Einschränkung [falls vorhanden]

Dieses Formular löscht das angegebene Tabellenlimit. Wenn die IF-Exists angegeben ist und das angegebene Limit nicht vorhanden ist, wird dies nicht ein Fehler angesehen. In diesem Fall wird nur eine Bemerkung ausgegeben. Deaktivieren / aktivieren [Replik | Immer] auslöser.

Diese Formulare setzen die aus der Tabelle gehörenden Triggerantwort (en). Der deaktivierte Trigger wird im System gespeichert, aber nicht ausgeführt, wenn das Ereignis, wodurch er auftritt. Für aufgeschobene Trigger wird der Einschlusszustand geprüft, wenn ein Ereignis auftritt, und nicht, wenn die Triggerfunktion tatsächlich aufgerufen wird. Dieser Befehl kann einen auslösenden Auslöser oder alle Auslöser des Tisches deaktivieren oder aktivieren, oder nur benutzerdefinierte Auslöser (die Beseitigung der erzeugten Intrasystem-Restriktionsauslöser, beispielsweise Auslöser, die ausländische Schlüsselbeschränkungen implementieren, oder die latente Einzigartigkeit oder Ausnahmeeinschränkungen). Um auszuschalten oder zur Einbeziehung erzeugter Intrasystem-Auslöser, erfordern Beschränkungen Superuserrechte; Es sollte mit Vorsicht ausgeschaltet sein, da es offensichtlich ist, dass es unmöglich ist, die Integrität der Einschränkungen zu gewährleisten, wenn die Trigger nicht funktionieren. Der Triggerantwortmechanismus betrifft auch die Konfigurationsvariable Session_Replication_Role. Ohne zusätzliche Anweisungen enthalten, funktionieren Trigger, wenn die Rolle der Replikation " ursprung " (Standardeinstellung) oder " lokal ". Die mit der ENABLE-Replikat enthaltenen Trigger werden nur ausgelöst, wenn der aktuelle Sitzungsmodus " replik »Und nach dem Angeben der ENTH-Datei löst sich unabhängig vom aktuellen Replikationsmodus immer aus.

Dieser Befehl fordert das Share Row Exclusive-Schloss an. Deaktivieren / aktivieren [Replik | Immer] Regel

Diese Formulare setzen die Antwort der Umschreibungsregeln im Zusammenhang mit der Tabelle ein. Die getrennte Regel wird im System gespeichert, gilt jedoch nicht während des Umschreibens der Anforderung. Im Wesentlichen ähneln diese Operationen den Operationen auf / Trennen von Triggern. Dies gilt jedoch nicht für die auf ausgewählten Regeln - sie werden immer angewendet, dass die Leistungen auch in Sitzungen weiterarbeiten, die die Hauptrolle der Replikation nicht erfüllen. Deaktivieren / Aktivieren der Zeilenebene

Diese Formulare steuern die Anwendung der Reihenschutzrichtlinien, die sich auf die Tabelle beziehen. Wenn die Verteidigung einschaltet, aber die Richtlinien für die Tabelle sind nicht definiert, wird die Standardzugriffspolitik angewendet. Beachten Sie, dass Politiker für den Tisch definiert werden können, auch wenn der Schutzniveau deaktiviert ist - in diesem Fall gilt die Richtlinien nicht und ihre Einschränkungen werden ignoriert. Siehe auch Richtlinien erstellen. Keine Gewalt- / Kraftreihenpegelsicherheit

Diese Formulare steuern die Anwendung der Zeilenschutzrichtlinien, die sich auf die Tabelle beziehen, wenn der Benutzer ihr Eigentümer ist. Wenn dieses Verhalten einschaltet, wirkt die Verteidigungspolitik der Zeilen auf den Tischbesitzer. Wenn es deaktiviert ist (Standardeinstellung), ist der String-Schutzschutz dem Benutzer nicht gültig, der der Besitzer des Tisches ist. Siehe auch Richtlinien erstellen. Cluster auf.

Dieses Formular wählt den Standardindex für nachfolgende Clusteroperationen aus. Das eigentliche Clustering der Tabelle wird nicht ausgeführt.

Share Update Exclusive wird aufgefordert, die Clustering-Parameter zu ändern. Ohne Cluster einstellen.

Dieses Formular löscht die letzte angegebene Indexspezifikation für Cluster. Seine Aktion beeinflusst künftige Clustering-Vorgänge, für die der Index nicht angegeben wird.

Share Update Exclusive wird aufgefordert, die Clustering-Parameter zu ändern. Mit oiden eingestellt.

Dieses Formular fügt die OID-Systemspalte der Tabelle hinzu (siehe Abschnitt 5.4). Wenn der Tisch bereits eine solche Säule hat, tut es nichts.

Beachten Sie, dass dies nicht dem Befehl "Spalte hinzugefügte OID OID" entspricht (dieser Befehl fügt keine systemische, sondern eine gewöhnliche Spalte mit einem geeigneten Namen OID). Ohne oids eingestellt.

Dieses Formular löscht die OID-Systemsäule von der Tabelle. Dies entspricht genau der Drop-Säulen-OID-Einschränkung, mit der Ausnahme, dass es in Abwesenheit der OID-Säule keine Fehler gibt. Tabellenbereich einstellen.

Dieses Formular ändert den Tabellenbereich der Tabelle auf das angegebene und verschiebt die mit dem Tisch zugeordneten Datendateien in einen neuen Speicherplatz. Tabellenindizes, falls verfügbar, bewegen Sie sich nicht; Sie können jedoch durch zusätzliche Befehle separat verschoben werden, um den Tabellenbereich einstellen. Alle in Tablespace können Sie alle Tablespace-Tabellen in einen anderen Tabellenbereich übertragen, während er zuerst alle Tabellen blockiert und jeden von ihnen überträgt. Dieses Formular unterstützt auch die Anweisungen des Besitzens, mit dem nur die Tabellen des angegebenen Eigentümers verschoben werden. Wenn der nowait-Parameter angegeben ist, endet der Befehl den Fehler, wenn Sie nicht sofort alle erforderlichen Schlösser erhalten können. Beachten Sie, dass Systemverzeichnisse dieses Formular nicht bewegt; Wenn Sie sie verschieben müssen, sollten Sie Änderungsdatenbank oder explizite Anrufe ändern. Information_Schema-Beziehungen gelten nicht als Teil von Systemdirektoren und unterliegen einer Verschiebung. Siehe auch einen Tabellenbereich erstellen. Set (protokolliert | unklar)

Dieses Formular ändert die TABLE-Protokollierungskennlinie, macht das Tabellenjournaling / nicht reflektiert (siehe ungültig). Es gilt nicht für die temporäre Tabelle. Einstellen ( Parameter_She Tatsache = Wert [, ... ])

Dieses Formular ändert einen oder mehrere Tabellenspeicherparameter. Weitere zulässige Parameter sind in den Speicherparametern beschrieben. Beachten Sie, dass dieser Befehl den Inhalt des Tisches nicht sofort ändert. Je nach Parameter kann es erforderlich sein, Tabellen überschreiben, um den gewünschten Effekt zu erhalten. Dies kann mit den Vakuum-Voll-, Clusterbefehlen oder einer der Formen der Änderungstabelle erfolgen, die den Tisch gewaltsam überschreiben.

Um die Parameter des Füllfaktors zu ändern und das automatische Reinigungs-Update-EXKLUSIVE-LOCK-Aktualisierung zu ändern.

Hinweis

Ermöglicht die Erstellung von Tabellen, mit denen Sie OIDs in der Syntax mit (mit ( Parameter_She Tatsache), ALTER-Tabelle nimmt OIDs nicht als Speicherparameter wahr. Um die OID-Eigenschaften zu ändern, verwenden Sie daher das Set mit OIDs und setzen Sie mit der Form von OIDs ein.

Zurücksetzen ( Parameter_She Tatsache [, ... ])

Dieses Formular setzt einen oder mehrere Speicherparameter auf Standardwerte zurück. Wie beim Set ist es möglicherweise erforderlich, die Tabelle für das vollständige Tabellenaktualisierung zu überschreiben. Erben. Tabelle_rodel.

Dieses Formular weist eine Zieltabelle mit einem Nachkomme eines bestimmten übergeordneten Tabelle zu. Anschließend enthalten Anforderungen an die übergeordnete Tabelle Datensätze und Zieltabelle. Damit der Tisch ein Nachkommen wird, sollte er dieselben Spalten als den Elternteil enthalten (obwohl er zusätzliche Spalten enthalten kann). Die Spalten müssen die gleichen Datentypen haben, und wenn einige von ihnen eine nicht null-Einschränkung in der übergeordneten Tabelle aufweisen, müssen sie in der Nachkombiertabelle kein Nullgrenze haben.

Auch in dem Tabellenkommden sollte alle Einschränkungen der übergeordneten Tabelle besucht werden, mit Ausnahme von Nicht-Außenanbietern (das von der Änderungstabelle erzeugt wird ... Fügen Sie Constraint ... keinerer Inherit), der ignoriert wird; In diesem Fall sollten alle relevanten Einschränkungen in der Nachkombinationstabelle nicht nicht externen sein. Derzeit sind ein einzigartiger, primärer Schlüssel und der Fremdschlüssel nicht berücksichtigt, aber in der Zukunft kann es sich ändern. Kein Erben. Tabelle_rodel.

Dieses Formular löscht eine Zieltabelle aus der Liste der Nachkommen der angegebenen übergeordneten Tabelle. Die Ergebnisse von Anfragen für die übergeordnete Tabelle enthalten keine Datensätze, die von der Zieltabelle entnommen werden. Von. Name

Dieses Formular bindet eine Tabelle mit einem Composite-Typ, als ob er von der Befehlstabelle erstellen gebildet wurde. Gleichzeitig sollten die Liste der Namen und Arten von Spalten genau eingehalten werden, was bildet Composite-Typ ist; Der Unterschied ist in der OID-Systemsäule möglich. Darüber hinaus sollte der Tisch kein Nachkomme einer anderen Tabelle sein. Diese Einschränkungen stellen sicher, dass die Befehlstabelle erstellt, mit derselben Definition eine Tabelle erstellt. NICHT VON.

Dieses Formular bricht den Anschluss der typisierten Tabelle mit seiner Art zusammen. Inhaber

Dieses Formular ändert den Eigentümer einer Tabelle, Sequenz, Darstellungen, materialisierte Präsentation oder Drittanbietertabelle auf einem bestimmten Benutzer. Replik-Identität.

Dieses Formular ändert die in der Voridentifikationsprotokoll aufgezeichneten Informationen, um die Variablen- oder Gelöschzeilen zu identifizieren. Dieser Parameter ist nur gültig, wenn eine logische Replikation verwendet wird. Im Standardmodus (Standardeinstellung für Nicht-Systemtabellen) werden die alten Werte der Spalten des Primärschlüssels geschrieben, wenn er ist. Im Verwendung der Index-Modus, wobei die alten Werte der Spalten, die den angegebenen Index bilden, die eindeutig sind, nicht teilweise, nicht aufgeschoben und nur Spalten enthalten, die nicht null markiert sind. Im Vollmodus werden die alten Werte aller Spalten in der Zeichenfolge aufgenommen, und im Nicht-Modus (Standard für Systemtabellen) werden keine Informationen über die alte Zeile aufgezeichnet. In allen Fällen werden die alten Werte im Protokoll aufgezeichnet, nur wenn mindestens eine Spalte von denjenigen, die aufgenommen werden sollen, in einer neuen Zeile aufgetreten sind. Umbenennen.

Umbenennen von Formularen Ändern Sie den Namen der Tabelle (oder Index, Sequenz, Repräsentationen, materialisierter Ansicht oder Drittanbietertabelle), den Namen der separaten Tabellenspalte oder den Namen des Tabellenlimits. Es beeinflusst die gespeicherten Daten nicht. Einstellen Sie das Schema.

Dieses Formular bewegt den Tisch in ein anderes Schema. Zusammen mit der Tabelle werden die zugehörigen Indizes und Einschränkungen bewegt, sowie Sequenzen, die zu den Spalten des Tisches gehören.

Alle Arten von Änderungstabellen, die auf einer Tabelle arbeitet, mit Ausnahme der Umbenennung und eingestellten Schemas, können in eine Liste mit mehreren Änderungen zusammengefasst und zusammen auftragen. Beispielsweise können Sie mehrere Spalten hinzufügen und / oder den Spaltentyp in einem Befehl ändern. Dies ist besonders nützlich für große Tische, da die gesamte Tabelle in einem Durchgang verarbeitet wird.

Alter Tabelle kann nur den Eigentümer der entsprechenden Tabelle halten. Um das Schema oder den Tabellenraum des Tisches zu ändern, ist es auch notwendig, in einem neuen Schema oder tabellarischen Speicherplatz das Recht zu erstellen. Um einen Tisch mit einem Nachkomme einer anderen Tabelle zu erstellen, müssen Sie der Besitzer und die übergeordnete Tabelle sein. Um den Eigentümer zu ändern, ist es notwendig, ein direktes oder vermitteltes Mitglied des neuen Rolleninhabers zu sein, und diese Rolle muss das Recht auf das Erstellen von in dem Tabellenschema haben. (Bei solchen Einschränkungen beim Ändern des Besitzers passiert nichts, dass es unmöglich war, das Recht zu haben, einen Tisch zu löschen und erneut zu erstellen. Der Superuser kann jedoch den Besitzer der Tabelle in jedem Fall ändern.) Um eine Spalte hinzuzufügen , Ändern Sie den Typ der Spalte oder wenden Sie den OFFORE OFFAY an und haben auch die richtige Nutzung für den entsprechenden Datentyp.

Parameter

Name (möglicherweise ergänzt durch eine Schaltung) vorhandene Tabelle, die geändert werden soll. Wenn der Tabellenname nur angegeben ist, ändert sich nur eine angegebene Tabelle. Ohne nur ändert sich die angegebene Tabelle und alle seine Nachkommen (falls vorhanden). Nach dem Tabellennamen können Sie auch eine optionale Angabe * hinzufügen, um explizit zu bezeichnen, dass alle untergeordneten Tische ändert. Namestolbitsa.

Der Name der neuen oder vorhandenen Spalte. New_imia_stolbtsy.

Der neue Name der vorhandenen Spalte. neuer Name

Neuer Tabellenname Type_data.

Datentyp einer neuen Spalte oder eines neuen Datentyps einer vorhandenen Spalte. Restriction_Table.

Neue Tischeinschränkung. Programmname

Der Name der neuen oder vorhandenen Grenze. Kaskade.

Objekte automatisch löschen, abhängig von der ausgewählten Spalte oder Einschränkungen (z. B. Ansichten, die diese Spalte enthalten), und wiederum hängen alle Objekte davon ab (siehe Abschnitt 5.13). BESCHRÄNKEN.

Ablehnen, Säulen oder Einschränkungen zu entfernen, wenn Objekte von ihnen abhängen. Dies ist das Standardverhalten. Name_trigger.

Der Name ist eingeschlossen oder deaktiviert den Auslöser aus. Alle.

Deaktivieren oder aktivieren Sie alle zum Tisch gehörenden Auslöser. (Dies erfordert das Recht der Superuser, wenn die erzeugten intrazilen Ausnahmeauslöser unter diesen Auslöser gehören, z. B. die Einschränkungen der externen Key- oder Abgrenzungseinheitlichkeitsbeschränkungen und Ausnahmen.) Benutzer

Deaktivieren oder ermöglichen Sie alle dem Tisch gehörenden Auslöser, mit Ausnahme des erzeugten Intrasystems von Ausnahmeauslöser, beispielsweise solche, die die Einschränkungen des externen Schlüssels oder der verabschiedenen Einschränkungen für Einzigartigkeit und Ausnahmen umsetzen. Name_Index.

Der Name des vorhandenen Index. Parameter_She Tatsache

Name des Tisches Wert

Der neue Wert des Speicherparameters der Tabelle. Dies kann je nach Parameter eine Zahl oder Zeichenfolge sein. Tabelle_rodel.

Übergeordnete Tabelle, mit der die Verbindung dieser Tabelle installiert oder zerrissen wird. New_vladeller.

Der Name des vom neuen Besitzer des Tisches ernannten Benutzers. New_tabl_space.

Der Name des tabellarischen Raums, in dem die Tabelle verschoben wird. New_shem.

Der Name der Schaltung, in der der Tisch verschoben wird.

Bemerkungen

Das Säulenschlüsselwort ertönt nicht die semantische Last und kann weggelassen werden.

Wenn die Spalte mithilfe der Spalte hinzugefügt wird, in allen vorhandenen Zeichenfolgen in der Tabelle, wird diese Spalte mit dem Standardwert (oder , wenn das Standardangebot für die Spalte fehlt) initialisiert. Wenn das Standardangebot fehlt, wird nur auf die Änderung der Metadaten reduziert, die direkten Änderungen an der Tabelle treten nicht auf. Hinzugefügte Null-Werte werden beim Lesen angezeigt.

Das Hinzufügen einer Spalte mit einem Standardangebot oder einer Änderung des Typs einer vorhandenen Spalte erfordert das Überschreiben der gesamten Tabelle und deren Indizes. Es ist jedoch möglich, beim Ändern des Typs der vorhandenen Spalte auszuschließen: Wenn der Vorschlag den Inhalt der Spalte nicht ändert, und der alte Typ ist einem neuen Typ schuldig oder ist eine unbegrenzte Domäne über einen neuen Typ, kein Umschreiben der Tabelle ist erforderlich; Obwohl alle Indizes mit betroffenen Säulen noch wieder aufgebaut werden müssen. Bei der Hinzufügung oder Löschung der OID-Systemspalte muss auch die gesamte Tabelle überschreiben. Der Wiederaufbau von großen Tischen und / oder deren Indizes kann ein sehr langes Verfahren sein, das gleichzeitig zwangsläufig doppelt so lange erfordert.

Hinzufügen von Check oder nicht Null-Einschränkungen sollten erforderlich sein, um die Tabelle zu scannen, um zu überprüfen, ob alle vorhandenen Linien die Einschränkung erfüllen, aber es ist nicht erforderlich, den Tisch zu überschreiben.

Die Fähigkeit, einen Satz von Änderungen an einem ALTER TABLE-Befehl zu kombinieren, ist hauptsächlich nützlich, in der Sie das Scannen und Überschreiben der von diesen Vorgängen erforderlichen Tabelle kombinieren können, und durchführen Sie sie in einem Durchgang.

Die Drop-Säulenform löscht die Spalte nicht physisch, sondern macht sie einfach für SQL-Vorgänge unsichtbar. Bei nachfolgenden Operationen zum Hinzufügen oder Ändern in diese Spalte wird der NULL-Wert aufgenommen. Somit wird das Entfernen der Spalte schnell ausgeführt, aber die Größe der Tabelle auf der Festplatte nimmt nicht ab, da der von einer Remote-Spalte belegte Speicherplatz nicht freigegeben ist. Dieser Raum wird mit der Zeit freigegeben, da sich die vorhandenen Linien ändern. (Beim Entfernen der OID-Systemspalte wird dieses Verhalten nicht beobachtet, da der Tisch sofort ausgeführt wird.)

Um den von einer Spalte besetzten Raum zwangsweise frei freizugeben, können Sie eine der Formen der Änderungstabelle durchführen, die den gesamten Tisch überschreiben. Infolgedessen werden alle Zeilen neu erstellt, so dass in der Remote-Spalte NULL enthalten ist.

Überschreibformen Alter Tabelle sind in Bezug auf MVCC unsicher. Nach dem Überschreiben wird der Tisch für parallele Transaktionen leer aussehen, wenn sie mit einem Snapshot bis zum Überschreiben empfangen werden. Einzelheiten finden Sie in Abschnitt 13.5.

Wenn Sie den eingestellten Datentypvorschlag angeben, können Sie den Ausdruck mit alten Zeilenwerten tatsächlich aufzeichnen. Das heißt, es kann sich beide auf die konvertierten Säulen und anderen verweisen. Auf diese Weise können Sie sehr allgemeine Datentransformationen in eingestellter Datentyp aufnehmen. In Anbetracht dieser Flexibilität gilt der Ausdruck nicht auf den Standardwert dieser Spalte (falls vorhanden); Das Ergebnis ist möglicherweise kein konstanter Ausdruck, der für den Standardwert erforderlich ist. Dies bedeutet, dass der eingestellte Datentyp in Abwesenheit eines expliziten Geräts oder der Zuweisung eines alten Typs nicht mit der Standardwertumwandlung, trotz der Tatsache, dass die Verwendung des Einsatzvorschlags angewendet wird, nicht umgehen. In diesen Fällen müssen Sie den Standardwert mit dem Drop-Standard löschen, den Änderungstyp durchführen, und dann verwenden Sie den SET-Standard-Set einen neuen Standardwert. Solche Überlegungen sind anwendbar und in Bezug auf Indizes und Einschränkungen mit dieser Spalte.

Wenn die Tabelle Tochtergesellschaften enthält, fügen Sie die Art der Spalte hinzu, umbenennen oder ändern oder ändern Sie die geerbte Beschränkung in der übergeordneten Tabelle, ohne in allen untergeordneten Tischen gleich zu sein, ist es unmöglich. Das heißt, der Befehl ALTER Table ist nicht erfüllt. Dadurch wird sichergestellt, dass die untergeordneten Tabellen immer dieselben Spalten wie der Elternteil enthalten.

Die rekursive Operations-Drop-Spalte entnimmt die Spalte von der untergeordneten Tabelle, nur dann, wenn diese Spalte nicht von einigen anderen Eltern vererbt wird, und wurde nicht unabhängig von der Tochtergesellschaft definiert. Die nicht-System-Operation Drop-Säule (d. H. ALTER-Tabelle nur ... Drop-Säule) Löscht niemals geerbtes Spalten, aber markiert sie jedoch als unabhängig bestimmte, nicht vererbt.

Aktionen Trigger, Cluster, Besitzer und Tabellenbereich werden niemals rekursiv auf Tochtergesellschaften verteilt. Das heißt, sie werden immer als angegeben ausgeführt. Der Zusatzbetrieb der Einschränkung erfolgt rekurisch nur für Überprüfungsbeschränkungen, die nicht als nicht erbert gekennzeichnet sind.

Keine Änderungen an den Systemkatalog-Tischen sind nicht zulässig.

Für eine detailliertere Beschreibung der zulässigen Parameter kontaktieren Sie an der Tabelle erstellen. Darüber hinaus ist Erbschaft in Kapitel 5 zu finden.

Beispiele

Hinzufügen von VARCHAR-Typ-Spalte auf Tabelle:

Ändern Tabellenverteiler hinzufügen Säulenadresse VARCHAR (30);

Spalte aus der Tabelle löschen:

Ändern Sie Tabellenverteiler Drop Säulenadresse RESTIERUNG;

Ändern der Arten von zwei vorhandenen Säulen in einem Vorgang:

ALTER TABLE Distributoren Alter Spaltenadresse Typ VARCHAR (80), Altersspaltenname Typ VARCHAR (100);

Änderung einer Ganzzahlspalte, die die Zeit im Stil von UNIX enthält, auf dem Zeitstempel mit dem Zeitzonentyp mit dem Angebot mit:

ALTER TABLE FOO ALTER SÄHREND FOO_TIMESTAMP SET Datatyp-Zeitstempel mit Zeitzone mit Zeitstempel mit Zeitzone "Epoche" + foo_timestamp * Intervall "1 Sekunde";

Dasselbe, aber in dem Fall, in dem, wenn die Spalte einen Standardwert hat, der nicht automatisch an einen neuen Datentyp gefahren wird:

ALTER TABLE FOO ALTER SPALL FOO_TIMESTAMP-DROPFALL DEFAULT, ALTERSPALL FOO_TIMESTAMP Typ Timestamp mit Zeitzone "Epoche" + foo_timestamp * Intervall "1 Sekunde", Ändern Sie die Spalte FOO_TIMESTAMP Set Standard Now ();

Benennen Sie eine vorhandene Spalte um:

Alter Tabellenverteiler Umbenennen der Spalte an die Stadt.

Benennen Sie die vorhandene Tabelle um.

Alter Tabelle Distributis umbenennen an Lieferanten;

Benennen Sie eine vorhandene Einschränkung um.

ALTER TABELLE Distributoren Umbenennen von ZipCchk umbenennen auf zip_check;

Hinzufügen von nicht Null-Einschränkungen für die Spalte:

ALTER TABELLE Distributoren Alter Spaltenstraßenset nicht null;

Entfernen des nicht-Null-Limits von der Spalte:

ALTER TABELLE Distributoren Alter Spalte Straßentabend nicht null;

Hinzufügen einer Grenzwertprüfung in der Tabelle und aller Nachkommen:

ALTER TABLE Distributoren Hinzufügen von ZipCchk-Check (char_length (ZIPCODE) \u003d 5);

Hinzufügen des Überprüfungslimits nur auf den Tisch, aber nicht an seinen Nachkommen:

Ändern Tabellenverteiler hinzufügen ZiPchk-Check (char_length (ZIPCODE) \u003d 5) KEINE EBERIT;

(Diese Zeitlimit wird auch nicht vererbt und zukünftige Nachkommen.)

Überprüfungslimit aus dem Tisch und von all seinen Nachkommen entfernt:

ALTER TABELLE Distributoren Drop Constraint Zipchk;

Löschen des Überprüfungslimits nur aus der Tabelle selbst:

Alter Tabelle nur Distributis Drop Constraint Zipchk;

(Restriktionsscheck bleibt in allen Tochtergesellschaften.)

Hinzufügen einer externen Schlüsselbeschränkung für den Tisch:

ALTER TABLE Distributoren Hinzufügen von CONSTRAINT DISTFK-Fremdschlüssel (Adresse) Referenzen Adressen (Adresse);

Hinzufügen eines externen Schlüsselbeschränkungen auf die niedrigsten Auswirkungen auf die Arbeit anderer:

ALTER TABLE Distributoren Hinzufügen von CONSTRAINT DISTFK-Fremdschlüssel (Adresse) Referenzen Adressen (Adresse) nicht gültig; ALTER TABELLE DISTRISTUTIS VALIDATE CONSTRINT DISTFK;

Hinzufügen von Eineinstellungsbeschränkungen für den Tisch (mehrere Spalten):

ALTER TABLE Distributoren Hinzufügen von CONSTRAINT DIST_ID_ZIPCODE_KEY eindeutig (dist_id, zipcode);

Hinzufügen der primären Schlüsseltabelle mit automatischem Namen (beachten Sie, dass in der Tabelle nur ein Primärschlüssel vorhanden ist):

Ändern von Tabellenverteilern hinzufügen Primärschlüssel (dist_id);

Bewegen Sie den Tisch in einen anderen Tabellenbereich:

Ändern Sie Tabellenverteiler Setzen Sie den Tablespace-FastAltablespace;

Bewegen Sie den Tisch in ein anderes Schema:

Alter Tabelle MySchema.Distributoren Set Schema-YourSchema;

Erstellen Sie die Einschränkung des Primärschlüssels erneut, ohne Änderungen des Wiederaufbaus des Indexs zu blockieren:

Erstellen Sie eindeutiger Index gleichzeitig dist_Id_temp_idx auf Distributoren (dist_id); Ändern Sie Tabelle Distributoren Drop Constraints Distributors_pey, Fügen Sie Constraint Distributors_PKey Primärschlüssel mit Index Dist_ID_TEMP_IDX hinzu;

Kompatibilität

Fügen Sie Formulare (ohne Verwendung von Index) hinzu, do Drop, set Standard- und Set-Datentyp (ohne Verwendung) einhalten Sie den SQL-Standard. Andere Formulare sind Erweiterungen des SQL-Standards, der in Postgres Pro implementiert ist. Darüber hinaus ist die Erweiterung die Möglichkeit, mehrere Änderungen in der Änderungstabelle in einem Befehl anzugeben.

Ändern der Tabellen-Drop-Spalte Ermöglicht das Entfernen einer einzelnen Tabellenspalte und hinterlassen Sie einen Tisch ohne Säulen. Dies ist eine Erweiterung des SQL-Standards, der nicht das Vorhandensein von Tabellen mit Nullspalten ermöglicht.

Der Befehl SQL ALTER TABLE ist so konzipiert, dass er die Struktur der Datenbanktabattentabelle ändert, wenn die Tabelle bereits vorhanden ist.

Ändern Sie die Tabelle, um eine Spalte, Standardwerte hinzuzufügen und zu löschen

Eine Anfrage an den Befehl ALTER TABLE Um eine neue Spalte an der Tabelle hinzuzufügen, hat die folgende Syntax:

Ändern Sie Tabelle Name_Table AddName_name_stolbet Typ_Data

Beispiel 1. Es gibt eine Firmendatenbank - Firma. Es hat einen Mitarbeitertisch (Mitarbeiter). Sie müssen dieser Tabelle eine neue Spalte hinzufügen - Sex (Boden). Die entsprechende Anforderung lautet wie folgt:

ALTER TABELLE MODERNEHNUNG Fügen Sie Sex CHAR (1) hinzu

Müssen Sie nun den Wert der Datensätze in der Standardtabelle einstellen. Eine Anforderung zum ALTER-Tabellenbefehl zu diesem Zweck enthält eine andere Befehlsänderungsspalte - und hat die folgende Syntax:

Ändern Tabelle Name_Table Alter Column_Name_stolbets Set Standard "value_pu_umol"

Beispiel 2. In der Firma lass die Datenbank, deren Firma genannt wird, hauptsächlich Frauen arbeiten. Der Datenbankadministrator hat beschlossen, den Prozess des Ausfüllens der Geschlechtsspalte (Gender) zu reduzieren und seinen Standardwert "F" einstellen (was den weiblichen Boden bedeutet). Die entsprechende Anforderung lautet wie folgt:

ALTERTABLE TABELLE ENÖGLERE ALTER SÄHRENDE SETTBESTE SET DEFAULT "F"

Nun, nur wenn ein neuer Mitarbeiter ein Mann ist, müssen Sie den Wert "M" in die Sexspalte passen, und in den meisten Fällen wird der Wert standardmäßig eingestellt - "F".

Mit einer Abfrage mit dem Befehl ALTER TABLE können Sie die Spalte aus der Tabelle entfernen. Die Syntax des Befehls ist wie folgt:

Ändern Sie die Tabelle Name_Table Drop scolumn_stolb

Beispiel 3. Angenommen, in derselben Firmen-Datenbank von der Mitarbeitertabelle müssen Sie die Sexsäule (Boden) entfernen. Die entsprechende Anforderung lautet wie folgt:

Alter Tabelle Mitarbeiter Drop Säulensex

Somit erschien eine neue Spalte in der Tabelle, deren Werte den Zeichentyp empfangen und aus einem Symbol bestehen.

Ändern Sie die Tabelle, um Tasten hinzuzufügen

Über Schlüssel in Datenbanktabellen - in der Klasse Relationales Datenmodell . Wenn der Primärschlüssel (Primärschlüssel) beim Erstellen einer Datenbanktabelle nicht definiert wurde, kann es mit dem Befehl ALTER TABLE erfolgen. Team-Syntax im Falle eines einfachen Primärschlüssels Weiter:

Ändern Sie Tabelle Name_Table Primary-Taste (spezifizierer_name)

Die Syntax des Befehls im Fall eines zusammengesetzten Primärschlüssels:

Ändern Sie Tabelle Name_Table Primary-Taste (Edentifier__Name_1___2_NAME_2)

Beispiel 4. Wir arbeiten mit der gleichen Unternehmensdatenbank mit der Mitarbeiterspalte zusammen. Wir können einen einfachen Primärschlüssel dieser Spalte in Form einer Mitarbeiterkennung hinzufügen und dies mögen:

ALTER TABLE-Mitarbeiter Primärschlüssel hinzufügen (EMP_ID)

Wenn beschlossen wird, den zusammengesetzten Kennzeichen aus einer Mitarbeiterkennung und einer Abteilungskennung zu verwenden, in der der Mitarbeiter funktioniert, verwenden wir folgende Anfrage:

ALTER TABLE MONOMPHONITY PRIMARY KEY (EMP_ID, DEPT_ID)

Ändern Sie die Tabelle, um Einschränkungen hinzuzufügen und zu entfernen

Darüber, was die Grenzen der Integrität sind, sagte im Unterricht Relationales Datenmodell . Wenn kurz - beim Löschen einer beliebigen Zeile von einem Tisch (1), in einer anderen Tabelle (2), in einer anderen Tabelle (2), wobei die Zeichenfolge, in der sich auf die Linie des Tisches (1) bezieht, keine Referenzen auftreten, die nicht in der Tabelle enthalten sind (1). Das heißt, die Links führen zu nirgendwo.

Der Befehl ALTER TABLE muss möglicherweise den Nullwert für einen solchen Link einstellen. Seine Syntax lautet wie folgt:

ALTER TABLE_NAME_TABLE_TABLE CONSTRAINT ABDECKENDE KEY NAME_DATE REFERENDS_TABLE_TABLE_NAME_TELA_TELETE SET NULL

Beispiel 5 Angenommen, Sie müssen in derselben Unternehmensdatenbank ein Referenzlimit installieren: Wenn Sie eine beliebige Abteilung von der Abteilung Tabelle in der Mitarbeitertabelle löschen, enthält Links zu diesen Abteilungen, der Linkwert (externe Taste) muss in NULL eingestellt werden (vollständig nicht definiert). Die entsprechende Anforderung lautet wie folgt:

ALTER TABLE MONOMPLECTORY CONSTRAINT DEPT_ID Fremd-Taste (DEPT_ID) Referenzen Abweset auf Löschsatz Null

Wenn also ein Mitarbeiter in der Abteilung arbeitet, das plötzlich eliminiert wurde und der Aufzeichnungen davon aus der Abteilungstabelle entfernt wird, wird der Wert der DEPT_ID-Säule in der Aufzeichnung dieses Mitarbeiters den Wert von NULL erfordern.

Eine Anforderung an den ALTER-Tabellenbefehl kann auch zum Löschen von Referenzeinträgen aus der Tabelle (1) gesperrt werden, wenn mindestens ein Eintrag in der Tabelle (2) vorhanden ist, an dem sich die Aufnahme in Tabelle (1) bezieht. Die Syntax einer solchen Anforderung lautet wie folgt:

ALTER TABLE NAME_SHIK_TABLE ZAHLEN ABDECKEN ABDECKENDE FRANCE KEY NAME_NAME Referenzen_Name_table_name_te_the_ löschen Einschränkungen

Der folgende Befehl mit der ALTER-Tabellenausdruck legt ein Verbot des Entfernens einer Gruppe von Vorbereitungen aus der Gruppentabelle fest, wenn mindestens ein Medikament dieser Gruppe vorhanden ist, das von der Aufnahme in der Herstellertabelle bestimmt wird:

aLTER TABLE-VORBEREITUNG Hinzufügen CONSTRAINT GR_ID Fremd-Taste (GR_ID) Referenzen Gruppe auf Löschschränkung

Wir erstellen ein Verbot der Entfernung der Apotheke aus der Apothekentabelle, wenn mindestens ein Mitarbeiter dieser Apotheke vorhanden ist, was durch den Datensatz in der Mitarbeitertabelle bestimmt wird:

aLTER TABLE MONOMPLECTORY CONSTRAINT PH_ID Fremd-Taste (PH_ID) Referenzen Apotheke auf Löschschränkung

Es kann auch eine Anforderung zum ALTER-Tabellen-Befehl ermittelt werden, dass, wenn Sie einen Eintrag in Tabelle (2) löschen, der sich auf den Eintrag in der Tabelle (1) bezieht, Sie müssen alle entsprechenden Datensätze in der Tabelle (1) (Kaskadierungsabfuhr) entfernen. . Die Syntax einer solchen Anforderung lautet wie folgt:

ALTER TABLE_NAME_TABLE_TABLE ABDECKUNG ABDECKEN AUSDRÜHEN KEY_NAME_TEENS_TABLE_TABLE_NAME_NAME_TELA_TELETE CASCADE

Beispiel 7.

Wir ändern die Verfügbarkeitstabelle neu und stellen fest, dass, wenn Sie die Zubereitung von der Herstellertabelle entfernen, alle Datensätze dieses Medikaments in der Verfügbarkeitstabelle entfernt werden.

aLTER TABLE Verfügbarkeit Hinzufügen Constraince PR_ID Fremd-Taste (PR_ID) Referenzen Vorbereitung auf Löschkaskade

Jetzt definieren wir, dass, wenn Sie die Apotheke aus der Apothekentabelle entfernen, alle Datensätze dieser Apotheke in der Verfügbarkeitstabelle entfernt werden:

aLTER TABLE Verfügbarkeit Hinzufügen Beschränkung PH_ID Fremd-Taste (PH_ID) Referenes Apotheke auf der Löschkaskade

Der folgende Befehl ändert den Defizit-Tisch und bestimmt, dass, wenn Sie die Vorbereitung aus der Herstellertabelle entfernen, alle Datensätze dieses Medikaments in der Defizit-Tabelle gelöscht werden sollten:

aLTER TABLE Defizit Hinzufügen von CONSTRAINT PR_ID Fremd Taste (PR_ID) Referenzen Vorbereitung auf Löschkaskade

Iv class \u003d "sogar"\u003e

Wir ändern den Defizit-Tisch erneut und stellen fest, dass, wenn Sie die Apotheke aus der Apothekentabelle entfernen, alle Aufzeichnungen dieser Apotheke in der Defizit-Tabelle gelöscht werden sollten:

aLTER TABLE Defizit Hinzufügen von CONSTRAINT PH_ID Fremd-Taste (PH_ID) Verweise Apotheke auf Löschkaskade

Eine Abfrage mit dem Befehl ALTER Table kann ein Prüflimit installiert werden. Die Syntax einer solchen Anforderung lautet wie folgt:

ALTER TABLE NAME_TABLICE ADD CONPRINT CHECK_DATA-Check (misserable_long)

Beispiel 8. Wir arbeiten weiterhin mit der Datenbank des Apothekennetzwerks zusammen.

Sie müssen die Verfügbarkeitstabelle ändern und bestimmen, dass der Wert des Attributs der Datestart-Tabelle in demselben Datensatz nicht weniger als der Datentumwert sein sollte.

ALTER TABLE Verfügbarkeit Hinzufügen Constraints CHECK_DATA-Check (Datestart

Ändern Sie den Defizit-Tisch und stellen Sie fest, dass in demselben Datensatz der Wert des Attributs der Datestart-Tabelle nicht weniger als der Datentumwert ist:

ALTER TABLE-Defizit-Einschränkung hinzufügen CHECK_DATA-Check (Datestart

Relationale Datenbanken und SQL-Sprache

Die Manipulation von Tabellen ist eine der häufigsten Aktivitäten, die Administratoren Datenbanken und Programmierer beim Arbeiten mit Basisobjekten durchgeführt werden. In diesem Abschnitt wird im Detail beschrieben, wie Sie Tabellen erstellen und modifizieren.

Der ANSI-Standard ist so etwas wie der kleinste gemeinsame Nenner für alle Hersteller, obwohl nicht jedes Merkmal der Standardversion der Anweisungen der Erstellung von Tabellen und ALTERTABLE TABLE von jedem Hersteller implementiert wird. Trotzdem ist der ANSI-Standard eine grundlegende Form, die auf allen Plattformen verwendet werden kann.

Die Plattformen bieten wiederum eine Vielzahl von Erweiterungen und Ergänzungen zu den Anweisungen der Anweisungen der Tabelle Erstellen und den ALTERTABLE-Ansi-Standard.

In der Regel müssen Sie über das Projektprojekt und den Weg nachdenken, um ihn zu erstellen. Dieser Prozess wird als Datenbankdesign bezeichnet. Der Prozess der Analyse der Beziehung der Tabelle mit eigenen Daten und anderen Tabellen in der Datenbank wird als Normalisierung bezeichnet. Wir empfehlen Programmierer und Datenbankadministratoren, um die Prinzipien des Designs und der Normalisierung vor der Verwendung der Datenbankbefehle erstellen zu lernen.

SQL 2003-Syntax.

Bei der Ausführung der Anweisung erstellen Tabellen-Anweisungen erstellt der SQL 2003-Standard in der Datenbank einen konstanten oder temporären Tisch. Die Syntax ist als nächstes.

Erstellen Sie [(lokale temporäre) globale temporäre temporäre)]] Tabelle Name_Tablique (Name Longbits Typ_Data Attribute [, ...]) | [Walker Name mit Optionen Optionen] | | (System generiert | Benutzer generiert | abgeleitet)] [, ...]] [Definition_table]] Name_Table Typ_DAN Attribute] | Set Standard_Name Name Call_Po_UMOLITE] | Drop default_name] | Qualitätsname SCOPE NAME_TABLE | Drop Scope_Name (Einschränkung | Kaskade)] | Name einschränken (Beschränken | Kaskade)] | |

Stichworte

Vorübergehend.

Kündigte eine konstante oder temporäre (temporäre) Tabelle aus dem lokalen (lokalen) oder globalen (globalen) Aktionsbereich an. Lokale temporäre Tabellen sind nur aus der erstellten Sitzung verfügbar, und sie werden automatisch gelöscht, wenn die Sitzung erstellt ist, dass sie abgeschlossen ist. Globale temporäre Tabellen sind in allen aktiven Sitzungen verfügbar, sie werden jedoch automatisch gelöscht, wenn die Sitzung sie erstellt hat. Geben Sie temporäre Tabellennamen nicht mit dem Schemanamen an.

(Name der Longbits Typ_Data-Attribute [,])

Eine Liste, in der ein oder mehrere Spalten über das Komma, ihre Datentypen und zusätzliche Attribute aufgeführt sind, z. B. die Werte der NULL-Werte (Nullbarkeit). Jede Tabellenerklärung sollte mindestens eine Spalte enthalten, für die Sie angeben können:

namestolbitsa.

Der Name der Spalte ist angegeben. Es sollte eine Kennung sein, die aus der Sicht der Regeln einer bestimmten Surbdelung zulässig ist. Der Name muss sinnvoll sein!

type_data.

Bindet eine Spalte mit einem Namen Name_Name. Ein bestimmter Datentyp. Für diese Datentypen, mit denen Sie ihre Länge angeben können, gibt es eine zusätzliche Parameterlänge, beispielsweise varchar (255). Der Datentyp muss in Surbd zulässig sein. Für eine vollständige Beschreibung der zulässigen Datentypen und deren Optionen für bestimmte Hersteller wenden Sie sich an Kapitel 2. Attribute

Unterzeichnet die angegebenen Restriktionsattribute mit der Spalte. Für eine Spalte mit dem Namen namens name_name können Sie mehrere Attribute angeben. Kommas sind nicht erforderlich. Die typischen Ansi-Attribute umfassen das Folgende.

NICHT NULL

Die Nullwerte sind in der Spalte verboten (oder erlaubt, wenn das nicht null-Angebot nicht ausgelassen wird). Alle Einfügen- und Aktualisierungsanweisungen, die versuchen, den Nullwert auf die Spalte mit dem nicht-Null-Attribut zu platzieren, wird nicht ausgeführt, und das Rollback tritt auf.

Standardausdruck

Die Spalte verwendet den Wert des Ausdrucks, wenn die Einfügungs- oder Aktualisierungsanweisung keinen beliebigen Wert eingibt. Der Ausdruck muss für den Datentyp der Säule zulässig sein. Beispielsweise können in der Spalte Ganzzahltyp keine Buchstabensymbole verwendet werden. Ein Ausdruck kann ein Zeichenfolge oder ein numerisches Literal sein, aber Sie können auch eine benutzerdefinierte oder Systemfunktion angeben. Mit dem SQL 2003-Standard können Sie die folgenden Systemfunktionen im Standardangebot verwenden: , user, currentjser, session_user, systemjjser, current_path, current_d und solche, currentjime, localime, currentjimestamp, localtjmestamp, array oder array.

Collate_name_name.

Die verwendete Kollation wird bestimmt, dh der Sortierreihenfolge in der entsprechenden Spalte. Der Name des Vergleichs hängt von der Plattform ab. Wenn der Übereinstimmungsname nicht definiert ist, wird die Standard-Mapping des in der Spalte verwendeten Zeichensatzes akzeptiert. Referenzen werden den geprüften Parameter festgelegt, ob Referenzen in der mit der Option Actionbereich definierten REF-Spalte überprüft werden. Ein zusätzliches Angebot zum Löschen bestimmt, ob die Werte in den von der entfernten Remote-Eingabe referenzierten Datensätze liegen, die in Null installiert werden soll, oder eine Einschränkung wird dem Betrieb auferlegt.

Begrenzungsgrenzname [Typ Referenz [Einschränkung]]

Der Parameter weist eine Restriktionsspalte zu und wenn Sie den Namen der Einschränkung wünschen. Arten von Einschränkungen werden in Kapitel 2 diskutiert. Da die Einschränkung einer bestimmten Spalte in Verbindung steht, wird in der Erklärung der Einschränkungen angenommen, dass diese Spalte in dieser Einschränkung der einzige ist. Nachdem der Tisch erstellt wurde, wird die Einschränkung in Betracht gezogen, um die Tabellenebene zu begrenzen.

namestolbitsa.

Die Spalte wird mit speziellen Optionen wie dem Actionbereich-Option (Scope), der Standardwertoption (Standardwert), der Standardwert-Option (Standard), die Spaltenebene oder das Collate-Angebot einschränken. In vielen Implementierungen ist der mit dem Optionsvorschlag auf die Erstellung von Objekten (eingegebenen) Tabellen beschränkt.

Wie name_table.

Die neue Tabelle wird mit den gleichen Spaltendefinitionen wie in der vorhandenen Tabelle Name_Table erstellt.

Refis-System: System generiert | Benutzer generiert abgeleitet]

Die Object-ID-Spalte (Objektkennung, OID) in Objekt (typisierte) Tabellen wird bestimmt. Die Objektkennung ist für eine Tabelle erforderlich, die die Wurzel in der Hierarchie der Tabellen ist. In Übereinstimmung mit diesem Parameter kann die Ref-Spalte vom System automatisch generiert werden (System generiert), angeben den Benutzer manuell an, wenn er in die Zeichenfolge (vom Benutzer generiert) eingeht oder basierend auf einer anderen REF-Spalte erstellt werden soll. Der Parameter benötigt erforderlich, um die Spalte the_strol_name einzuschalten. Referenzen Attribut.

Beschränkungsgrenze Typ [Limit Name] [, ...]

Die Tabelle ist ein oder mehrere Einschränkungen zugewiesen. Dieser Parameter unterscheidet sich spürbar von den Einschränkungen der Spaltenebene, da angenommen wird, dass die Einschränkungen des Spaltenpegels nur für die Spalte gelten, mit der sie angeschlossen sind. Bei Einschränkungen des Tischniveaus besteht die Möglichkeit, mit einer Einschränkung mehrerer Säulen herzustellen. In der Verkaufstabelle müssen Sie beispielsweise in der Verkaufstabelle eine eindeutige Einschränkung auf der Store_ID-Kupplungsschlüssel, ARTACT_ID und ARTAGE_DATE angeben. Dies kann nur durch Begrenzung der Tabellenebene erfolgen. Eine detaillierte Diskussion von Einschränkungen finden Sie in Kapitel 2.

Name [Definition_table]

Es wird angekündigt, dass die Tabelle auf dem fertigen Benutzertyp basiert. In dieser Situation kann die Tabelle nur eine Spalte für jedes Attribut des strukturierten Typs sowie eine zusätzliche Spalte aufweisen, die im REF definiert ist, ist ein Vorschlag. Der REF-Datentyp wird im Abschnitt "Abschnitt" erstellen / ändern "ausführlich beschrieben. Dieser Vorschlag ist mit dem ähnlichen Vorschlagsnamen nicht kompatibel. Wo:

Unter SuperTeck [Definition / Tabelle]

Ein unmittelbarer Supertable wird für die aktuelle Tabelle in demselben Schema deklariert (falls vorhanden). Wenn Sie möchten, können Sie eine vollständige Definition_TABLE für den Supertable angeben, um ihn mit Säulen, Einschränkungen und dergleichen zu füllen.

Beim Commit (Preserve-Zeilen, die Zeilen löschen]

Bei Commit Preserve-Zeilen setzt ROWs ein temporärer Tabellen-Data-Saiten bei der Ausführung der Commit-Anweisung. Das On Commit Löschen von RO WS-Angebot entfernt alle Datenzeilen in der temporären Tabelle, wenn Sie den Commit-Anweisungen ausführen.

NAME_STOLBET TYPE_DATA Attribute hinzufügen

Eine Spalte mit einem geeigneten Datentyp und Attributen wird zum Tisch hinzugefügt.

Alter_stolbet_name Set Standardwert

Der Standardwert wird der Spalte (falls nicht vorhanden) hinzugefügt, oder variiert mit dem vorhandenen Wert.

Ändern Sie den Fall Default_stolb

Der Standardwert wird vollständig aus der angegebenen Spalte entfernt.

Alter_STOLBET NAME Fügen Sie Scope Name_Table hinzu

Die angegebene Spalte fügt einen Aktionsbereich hinzu (Umfang). Der Umfang ist ein Link zum Benutzerdatentyp.

Ändern Sie den Drop-Geltungsbereich Drop Scope

Der Umfang wird aus der angegebenen Spalte entfernt. Beschränken und Cascade-Angebote werden am Ende dieser Liste erläutert.

Drop column_stolbet Name.

Die angegebene Spalte wird aus der Tabelle entfernt. Beschränken und Cascade-Angebote werden am Ende dieser Liste erläutert.

Fügen Sie tabellarische_camination hinzu

Die Tabelle fügt eine Einschränkung mit dem angegebenen Namen und Merkmalen hinzu.

LOP-CONSTRAINT-LIMIT-NAME

Die vorhandene Grenze wird aus der Tabelle entfernt.

BESCHRÄNKEN.

Wenn Sie diesen Vorschlag angeben, bricht Surbd den Befehl ab, wenn Objekte abhängig von diesem Objekt in der Datenbank liegen.

Wenn Sie diesen Vorschlag angeben, entfernt SURBD alle anderen Objekte je nach diesem Objekt.

Fortsetzung des Themas:
W-lan

Zu wissen, warum das Telefon erhitzt wird, kann der Benutzer versuchen, seine Temperatur zu reduzieren. Dies wird dazu beitragen, eines der häufigsten Probleme zu lösen - obwohl er damit konfrontiert ist ...