Database - Veritabanı
SQL'de Birincil Anahtar (Primary Key) Ve Otomatik Artan (Auto Increment) Sütun İçin INSERT Nasıl Yapılır
SQL'de Birincil Anahtar (Primary Key) Ve Otomatik Artan (Auto Increment) Sütun İçin INSERT Nasıl Yapılır
-
Şimdi arkadaşlar bir tane tablom var ve kayıtlar şu şekilde.
eskitablo
6 ----
7 ----
1004 ---3000 ---şekilnde id değerli kayıtlar mevcut.
bu kayıtları yenitabloda pk, ai alana nasıl insert ederek ekleme yapabilirim. Mesela en son eklenen kayıt diyelim ki 9000 diyelim. yeni bir kayıt eklenince 9001'den başlasın istiyorum.
Yardımlarınız için teşekkürler.
-
ya columnlari belirtirsin
INSERT INTO tablo (column2, column3) VALUES(val1, val2)
gibi yada autoincrement olan columna NULL eklersin. Bazı SQL implementationlarda 0 yazınca da sıradaki sayıyı koyuyor.
Eğer belli bir sayıyı vermek istiyorsan override edebiliyorsun normal ekleyip auto_increment alanı. Ayrıca sıradaki sayıyı kendin de belirleyebilirsin.
j4x tarafından 22/Tem/15 14:03 tarihinde düzenlenmiştir -
Şimdi eski bir tablon var ve yeni bir tabloya mı aktarmak istiyorsun?
Yeni tabloya ilk kayıtı
insert into yenitablo values ( 9000, değer1, değer2, değer3) from eskitablo
daha sonrakileri
values (NULL, değer1, değer2, değer3) from eskitablo
diye ekle
-
Şöyle özetleyeyim,
eski tablodaki id sütunu money tipinde. Ben bunu yeni tabloya aktarıcam fakat money tipindeki değerlerin hepsi yenitablodaki pk ve ai özelliğine sahip alana geçmeli
Eski tablo
NewsId (money)
Yeni tablo
haberID (INT PRIMARY KEY NOT NULL IDENTITY(1,1))
Umarım anlatabilmişimdir.
-
Eğer en son eklenen kaydın id sini farklı bir tablo da eklemek istersen ki yeni tablomda demişsin be öyle anladım, aşağıdaki LAST_INSERT_ID(); komutunu kullanabilirsin.
INSERT INTO tabo1 (id,baslik) VALUES (NULL, 'abc');
eklenen_son_id = LAST_INSERT_ID();
ve ya
INSERT INTO tablo1 (id,baslik) VALUES (NULL, 'abc');
INSERT INTO tablo2 (id,tablo1_id,baslik) VALUES (NULL, LAST_INSERT_ID(),'xxx');gibi
-
Cidden anlatamadım.
Ardışık olmayan rastgele sayılar düşünün (7, 100, 544, 10003 vs...), bunu otomatik artan ve birincil anahtar değerlerine sahip bir alana nasıl insert edersiniz?
Umarım bu kez anlatabilmişimdir, uykusuzluk neticesinde kafa durgun.
-
Sorgunun başında SET IDENTITY_INSERT ON yaparsın, eklersin, sonra SET IDENTITY_INSERT OFF yaparsın
Edit : SET IDENTITY_INSERT sadece o sessionda geçerlidir, diğer sessionları etkilemez. eğer 1 sefer yapacaksan Management Studioda Yeni SQL Ac
SET IDENTITY_INSERT ON
Insert
Insert
bla bla
SET IDENTITY_INSERT OFF yap bitsin.
Ayrıntılı bilgi için bknz : MSDN SET IDENTITY_INSERT
renegadealien tarafından 22/Tem/15 14:34 tarihinde düzenlenmiştir -
DECLARE @deger INT
SET @deger = (SELECT MAX(ID) FROM TABLO_ADI)
if(@deger IS NULL)
SET @deger = 0
DBCC CHECKIDENT (TABLO_ADI, RESEED, @deger)sonrada insert yap ;)