Automatyczne wypełnienie kolumn całkowitych wartościami unikalnymi - MS SQL, ORACLE

0

Witam,
pytanie jak w temacie.
Jakie są metody automatycznego wypełnienia kolumn całkowitych wartościami unikalnymi w bazach MS SQL, ORACLE ?

W bazie MS SQL:

  • należy utworzyć dla kolumny ograniczenie PRIMARY KEY lub UNIQUE

  • oraz stworzenie indexu bez powtórzeń.

A Jak to wygląda w bazie Oracle??

1

chyba w każdej bazie SQL jak zakładasz ograniczenie PK lub UNIQUE to indeks generuje się z automatu.
Natomiast nie ma to nic wspólnego z automatycznym wypełnianiem kolumn. W oracle musisz stworzyć sekwencję i założyć wyzwalacz, który będzie nadawał polu wartość z sekwencji. W MSSQL masz typ IDENTITY
więcej tu http://www.w3schools.com/sql/sql_autoincrement.asp

1

Przykładowa sekwencja:
CREATE SEQUENCE sequence_name
MINVALUE value
MAXVALUE value
START WITH value
INCREMENT BY value
CACHE value;

Podczas wstawiania rekordu do tabeli robisz:
INSERT INTO suppliers
(supplier_id, supplier_name)
VALUES
(supplier_seq.NEXTVAL, 'Jan Nowak');

1
lukasz_p92 napisał(a):

Witam,
pytanie jak w temacie.
Jakie są metody automatycznego wypełnienia kolumn całkowitych wartościami unikalnymi w bazach MS SQL, ORACLE ?

W bazie MS SQL:

  • należy utworzyć dla kolumny ograniczenie PRIMARY KEY lub UNIQUE

Nie jest to prawdą. Nie trzeba zakładać żadnych kluczy aby w kolumy dowlnego typu wypełnić automatycznie wartościami
unikalnymi. Indeks unique uniemożliwia wstawienie (automaycznie i ręcznie) dwóch identycznych wartości (dowolnego typu).

lukasz_p92 napisał(a):
  • oraz stworzenie indexu bez powtórzeń.

Unique w mssqlu nie jest równoznaczne z założeniem indeksu unique?

lukasz_p92 napisał(a):

A Jak to wygląda w bazie Oracle??

</quote> Zapewne tak samo jak wszędzie, trzeba różne wartości wstawić do kolumny jakimś automatem: programem, sekwencją, triggerem, czy jak tam jeszcze zwał.

Pozdrawiam

0

W Oracle tak jak wspomniałem wcześniej stosuje się sekwencje.
Monza trigger (ale do takiego zastosowania stosuje się sekwencję)

1 użytkowników online, w tym zalogowanych: 0, gości: 1