DBAtlas · Veritabanı operasyon atlası

Sequence / otomatik artan değer oluştur

Oracle

-- Sequence
CREATE SEQUENCE musteri_seq START WITH 1 INCREMENT BY 1 NOCACHE;
SELECT musteri_seq.NEXTVAL FROM dual;

-- veya identity kolon (12c+)
CREATE TABLE musteri (id NUMBER GENERATED ALWAYS AS IDENTITY, ad VARCHAR2(100));

Klasik yöntem CREATE SEQUENCE + NEXTVAL/CURRVAL. 12c'den itibaren GENERATED AS IDENTITY kolonlar da desteklenir. CACHE değeri performansı artırır ama boşluk (gap) oluşabilir.

PostgreSQL

-- Sequence
CREATE SEQUENCE musteri_seq START 1 INCREMENT 1;
SELECT nextval('musteri_seq');

-- Modern yöntem: identity kolon
CREATE TABLE musteri (id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY, ad text);
-- Klasik: serial (arka planda sequence kurar)
CREATE TABLE loglar (id serial PRIMARY KEY, mesaj text);

GENERATED ... AS IDENTITY SQL standardıdır ve önerilir; serial eski kısayoldur. nextval/currval ile manuel erişilir. setval ile değer sıfırlanabilir.

MySQL

-- AUTO_INCREMENT kolon
CREATE TABLE musteri (id BIGINT AUTO_INCREMENT PRIMARY KEY, ad VARCHAR(100));

-- Başlangıç değerini ayarla
ALTER TABLE musteri AUTO_INCREMENT = 1000;

-- Son eklenen değeri al
SELECT LAST_INSERT_ID();

MySQL/MariaDB'de bağımsız sequence nesnesi (standart) yoktur; AUTO_INCREMENT kolon kullanılır (tablo başına bir tane, index'li olmalı). MariaDB 10.3+ CREATE SEQUENCE'i destekler.

SQL Server

-- IDENTITY kolon
CREATE TABLE musteri (id INT IDENTITY(1,1) PRIMARY KEY, ad NVARCHAR(100));

-- Bağımsız sequence nesnesi
CREATE SEQUENCE musteri_seq AS INT START WITH 1 INCREMENT BY 1;
SELECT NEXT VALUE FOR musteri_seq;

IDENTITY(seed,increment) tablo kolonuna bağlıdır. CREATE SEQUENCE (2012+) tablodan bağımsız, tablolar arası paylaşılabilir sayaç sağlar; NEXT VALUE FOR ile alınır.

MongoDB

// MongoDB'de otomatik sayaç yoktur; findOneAndUpdate ile counter deseni
db.sayaclar.findOneAndUpdate(
  { _id: "musteri" },
  { $inc: { seq: 1 } },
  { upsert: true, returnDocument: "after" }
);

Varsayılan _id ObjectId'dir (zaten benzersiz, kabaca artan). Sıralı tam sayı gerekiyorsa ayrı bir sayaç koleksiyonunda $inc ile atomik olarak üretilir.

Redis

# Atomik sayaç
INCR musteri:id
# veya belirli adımla
INCRBY musteri:id 10

INCR/INCRBY atomiktir ve dağıtık ortamda benzersiz artan ID üretmek için idealdir. Anahtar yoksa 0'dan başlar.

Elasticsearch

# Uygulanamaz: Elasticsearch sequence nesnesi sunmaz. Doküman ID otomatik atanır;
# eşzamanlılık kontrolü için dahili _seq_no ve _primary_term alanları kullanılır.
POST loglar/_doc
{ "mesaj": "ornek" }

ID vermeden POST edilirse ES rastgele benzersiz _id atar (artan değil). _seq_no her yazımda artan dahili bir sıra numarasıdır ama optimistic concurrency içindir, uygulama sayacı değildir.

DBAtlas'ta aç →