2012-06-12 3 views
21

Wie setze ich eine Spalte, um automatisch mit Oracle SQL Developer zu inkrementieren? Warum ist das Formular deaktiviert?Wie setze ich die automatische Inkrement-Spalte mit dem SQL-Entwickler

Oracle SQL Developer

Hinweis: Das Bild zeigt den Data Modeler, aber die Frage und Antwort Top-Talk eine vorhandene Datenbank zu bearbeiten.

+0

Siehe diesen Beitrag, der sehr ähnlich ist http://stackoverflow.com/questions/10613846/create-table-with-sequence-nextval-in-oracle –

Antwort

24

Leider Oracle unterstützt nicht auto_increment wie mysql tut. Sie müssen ein wenig mehr Mühe geben, um das zu bekommen.

sagen, dass dies Tisch ist -

CREATE TABLE MYTABLE (
    ID NUMBER NOT NULL, 
    NAME VARCHAR2(100) 
    CONSTRAINT "PK1" PRIMARY KEY (ID) 
); 

Sie müssen eine Sequenz erstellen -

CREATE SEQUENCE S_MYTABLE 
START WITH 1 
INCREMENT BY 1 
CACHE 10; 

und einen Trigger -

CREATE OR REPLACE TRIGGER T_MYTABLE_ID 
BEFORE INSERT 
ON MYTABLE 
REFERENCING NEW AS NEW 
FOR EACH ROW 
BEGIN 
    if(:new.ID is null) then 
    SELECT S_MYTABLE.nextval 
    INTO :new.ID 
    FROM dual; 
    end if; 
END; 
/

ALTER TRIGGER "T_MYTABLE_ID" ENABLE; 
+0

ich will es kann automatisch erstellt werden.hehehe .... –

+2

Seit 2012 haben sich die Dinge geändert. Sie können dies jetzt mit der Ankunft der Oracle Database 12c tun. Hier ist, wie es jetzt geht: http://www.thatjeffsmith.com/archive/2014/01/defining-12c-identity-columns-in-oracle-sql-developer-data-modeler/ – thatjeffsmith

+1

Ich mag Dans Antwort besser. Der mit dem Bild. Lohnt sich 1000 Worte. – Wes

1

Wie es mit Oracle SQL zu tun Entwickler: Im linken Bereich, unter den Verbindungen finden Sie "Sequenzen", klicken Sie mit der rechten Maustaste und wählen Sie c Erzeuge eine neue Sequenz aus dem kontextsensitiven Popup. Geben Sie die Details ein: Schemaname, Sequenzname, Eigenschaften (Start mit Wert, Minwert, Maxwert, Inkrementwert usw.) und klicken Sie auf OK. Angenommen, Sie haben eine Tabelle mit einem Schlüssel, der dieses auto_increment verwendet, geben Sie beim Einfügen in diese Tabelle einfach "your_sequence_name.nextval" in das Feld ein, das diese Eigenschaft verwendet. Ich denke, das sollte helfen! :)

5

Sie können in SQL Modeler automatisch erhöhen. Klicken Sie im Fenster mit den Spalteneigenschaften auf: Allgemein und kreuzen Sie dann das Kästchen Auto Increment an. Danach wird das automatische Inkrementierungsfenster für Sie aktiviert.

+0

Danke für Ihren Beitrag! Bitte verwenden Sie keine Signaturen/Taglines in Ihren Beiträgen. Ihre Benutzerbox gilt als Ihre Unterschrift, und Sie können Ihr Profil verwenden, um Informationen über sich selbst zu veröffentlichen. [FAQ zu Unterschriften/Slogans] (http://stackoverflow.com/faq#signatures) –

1

Ich fand diesen Beitrag, der ein bisschen alt aussieht, aber ich dachte, ich würde jeden über meine neuen Erkenntnisse aktualisieren.

Ich verwende Oracle SQL Developer 4.0.2.15 unter Windows. Unsere Datenbank ist Oracle 10g (Version 10.2.0.1) unter Windows ausgeführt.

Um eine Spalte Autoinkrement in Oracle zu machen -

  1. die Datenbankverbindung in der Registerkarte Verbindungen der Tabellen Abschnitt
  2. Expand Aufmachen und rechts in der Tabelle klicken, die die Spalte, die Sie ändern möchten, muss um automatisch zu inkrementieren, und wählen Sie Bearbeiten ...
  3. Wählen Sie den Abschnitt Spalten, und wählen Sie die Spalte, die Sie automatisch inkrementieren möchten (Primärschlüssel Spalte)
  4. Als nächstes klicken Sie auf den Abschnitt "Identitätsspalte" unter der Liste von Spalten und ändern Sie den Typ von "Keine" in "Spaltenfolge" "
  5. Lassen Sie die Standardeinstellungen (oder die Namen der Sequenz und Trigger ändern, wenn Sie es vorziehen) und dann klicken Sie auf OK

Ihre ID-Säule (Primärschlüssel) wird nun Autoinkrement, aber die Sequenz beginnt um 1. Wenn Sie die ID auf einen bestimmten Punkt erhöhen müssen, müssen Sie einige alter-Anweisungen für die Sequenz ausführen.
This post hat einige weitere Details und wie man das zu überwinden.

ich die Lösung here

47

gefunden Wenn Sie Ihre PK Autoinkrement machen wollen, müssen Sie die ID-Spalte Eigenschaft für diesen Primärschlüssel festlegen.

  1. Klicken Sie mit der rechten Maustaste auf die Tabelle und wählen Sie "Bearbeiten".
  2. Wählen Sie im Fenster "Bearbeiten" Tabelle "Spalten", und wählen Sie dann Ihre PK Spalte.
  3. Wechseln Sie zur Registerkarte ID-Spalte, und wählen Sie Spaltensequenz als Typ aus. Dies wird einen Trigger und eine Sequenz erstellen und die Sequenz zu Primärschlüssel zuordnen.

Siehe das Bild unten für ein besseres Verständnis.

// Meine Quelle ist: http://techatplay.wordpress.com/2013/11/22/oracle-sql-developer-create-auto-incrementing-primary-key/

+2

Große Antwort. Ich bin mir nicht sicher, warum es nicht mehr aufgewertet wird. – Wes

+0

Danke Mann, schätze es! –

+0

Große Antwort. Ich möchte jedoch darauf hinweisen, dass es wichtig ist, das Kontrollkästchen "Spalte vor dem Einfügen ist auf Null zu prüfen" zu prüfen, das möglicherweise nicht erwünscht ist. Wenn Sie eine Sequence-ID verwenden, möchten Sie normalerweise nicht, dass sie von woanders aufgefüllt wird. (Kann davon abhängen, aber denken Sie einen Augenblick nach.) – not2savvy

3

@ tom-studee Sie richtig waren, ist es möglich, sie in den Daten-Modellierer zu tun.

Doppelklicken Sie auf Ihre Tabelle und gehen Sie dann zum Spaltenbereich. Hier doppelklicken Sie auf die Spalte, die das automatische Inkrement haben soll. Im allgemeinen Bereich gibt es eine Checkbox "Autoincrement", einfach ankreuzen.

Danach können Sie auch auf den Abschnitt "Autoincrement" gehen, um es anzupassen.

Wenn Sie es speichern und den Datenmodellierer bitten, das SQL-Skript zu generieren, sehen Sie die Sequenz und den Trigger, die Ihre Autoinkremente darstellen.

Verwandte Themen