2012-06-12 10 views
21

Come si imposta una colonna per l'incremento automatico con Oracle SQL Developer? Perché il modulo è disabilitato?come impostare la colonna di incremento automatico con lo sviluppatore sql

Oracle SQL Developer

Nota: L'immagine mostra la Modeler dati, ma la domanda e la risposta Cima sulla modifica di un database esistente.

+0

Vedere questo post che è molto simile http://stackoverflow.com/questions/10613846/create-table-with-sequence-nextval-in-oracle –

risposta

24

Sfortunatamente oracle non supporta auto_increment come fa mysql. Devi fare un piccolo sforzo in più per ottenere quello.

dire che questo è il vostro tavolo -

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

Sarà necessario creare una sequenza -

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

e un 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

voglio che il suo possa essere creato automaticamente.hehehe .... –

+2

Dal 2012, le cose sono cambiate. Puoi farlo ora con l'arrivo di Oracle Database 12c. Ecco come farlo ora: http://www.thatjeffsmith.com/archive/2014/01/defining-12c-identity-columns-in-oracle-sql-developer-data-modeler/ – thatjeffsmith

+1

Mi piace la risposta di Dan meglio. Quello con l'immagine. Vale un migliaio di parole. – Wes

1

Come fare con Oracle SQL Sviluppatore: Nel riquadro sinistro, sotto le connessioni troverai "Sequenze", fai clic destro e seleziona c creare una nuova sequenza dal popup sensibile al contesto. Compila i dettagli: Nome dello schema, nome_seconda, proprietà (inizia con valore, valore minimo, valore massimo, valore di incremento ecc.) E fai clic su ok. Supponendo di avere una tabella con una chiave che utilizza questo auto_increment, mentre si inserisce in questa tabella basta dare "your_sequence_name.nextval" nel campo che utilizza questa proprietà. Immagino che questo dovrebbe aiutare! :)

5

È possibile eseguire l'incremento automatico in SQL Modeler. Nella finestra delle proprietà delle colonne, fare clic su: Generale quindi selezionare la casella di Incremento automatico. Successivamente, la finestra di incremento automatico sarà abilitata per te.

+0

Grazie per il tuo post! Per favore non usare firme/tagline nei tuoi post. Il tuo box utente conta come la tua firma, e puoi usare il tuo profilo per pubblicare qualsiasi informazione che ti riguarda. [FAQ su firme/taglines] (http://stackoverflow.com/faq#signatures) –

1

Ho trovato questo post, che sembra un po 'vecchio, ma ho pensato di aggiornare tutti i miei nuovi risultati.

Utilizzo Oracle SQL Developer 4.0.2.15 su Windows. Il nostro database è Oracle 10g (versione 10.2.0.1) in esecuzione su Windows.

Per effettuare una colonna a incremento automatico in Oracle -

  1. aprire la connessione al database nella scheda Connessioni
  2. Espandere la sezione Tabelle, e fare clic destro la tabella che ha la colonna che si desidera modificare per incrementare automaticamente e selezionare Modifica ...
  3. Scegliere la sezione Colonne e selezionare la colonna che si desidera incrementare automaticamente (colonna Chiave primaria)
  4. Quindi fare clic sulla sezione "Colonna identità" sotto l'elenco di colonne e cambia il tipo da Nessuno a "Sequenza colonne" "
  5. lasciare le impostazioni di default (o modificare i nomi della sequenza e grilletto se si preferisce) e quindi fare clic su OK

La colonna id (chiave primaria) sarà ora di incremento automatico, ma la sequenza inizierà a 1. Se è necessario incrementare l'ID fino a un certo punto, è necessario eseguire alcune modifiche alla sequenza.
This post ha alcuni più dettagli e come superare questo.

ho trovato la soluzione here

47

Se si desidera rendere il vostro incremento automatico PK, è necessario impostare la proprietà della colonna ID per quella chiave primaria.

  1. Fare clic con il tasto destro del mouse sul tavolo e selezionare "Modifica".
  2. Nella finestra tabella "Modifica", selezionare "colonne", quindi selezionare la colonna PK .
  3. Passare alla scheda Colonna ID e selezionare Sequenza colonne come Tipo. Questo sarà creare un trigger e una sequenza e associare la sequenza alla chiave primaria .

Vedere l'immagine qui sotto per una migliore comprensione.

// La mia fonte è: http://techatplay.wordpress.com/2013/11/22/oracle-sql-developer-create-auto-incrementing-primary-key/

+2

Ottima risposta. Non sono sicuro del motivo per cui non è più ottimizzato. – Wes

+0

Grazie amico, lo apprezzo! –

+0

Ottima risposta. Tuttavia, posso modificare che è importante dare un'occhiata alla casella di controllo "Controlla colonna è nullo prima di inserire" che potrebbe non essere desiderato. Quando usi un ID sequenza, di solito non vuoi che venga popolato da un'altra parte, (può dipendere, ma assicurati di pensare per un momento.) – not2savvy

3

@ tom-studee Avevi ragione, è possibile farlo nel modellatore di dati.

Fai doppio clic sul tuo tavolo, quindi vai alla sezione della colonna. Qui fai doppio clic sulla colonna che avrà l'incremento automatico. Nella sezione generale c'è una casella di controllo "autoincremento", basta spuntarla.

Dopodiché puoi anche andare alla sezione "autoincremento" per personalizzarlo.

Quando lo salvi e chiedi al modellatore dati di generare lo script SQL, vedrai la sequenza e il trigger che rappresentano il tuo autoincremento.