Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

[Çözüldü] Tablo colonunun identity özelliğini kod ile kaldırmak

Konu, 'Veritabanları' kısmında cengizkiylioglu tarafından paylaşıldı.

  1. cengizkiylioglu

    cengizkiylioglu Yeni Üye

    Kayıt:
    24 Haziran 2011
    Mesajlar:
    4
    Beğenilen Mesajlar:
    0
    Merhaba,

    sql serverda oluşturturulan tablo colonun identity özelliğini kod ile no ya çevirmeliyim.
    Resimde gösterdiğim alan. Bu konuda yardımlarınızı bekliyorum.


    Eki Görüntüle 10345
     
  2. skacurt

    skacurt Â

    Kayıt:
    4 Ocak 2008
    Mesajlar:
    4,311
    Beğenilen Mesajlar:
    2
    Meslek:
    Küfeci
    Şehir:
    İstanbul
    Management Studio'da Identity Specification'ı No olarak değiştirdikten sonra resimde işaretlediğim ikona tıklarsan değişiklik için bir Change Script oluşturur. Bu sorguyu kullanabilirsin.
    [​IMG]
     
  3. cengizkiylioglu

    cengizkiylioglu Yeni Üye

    Kayıt:
    24 Haziran 2011
    Mesajlar:
    4
    Beğenilen Mesajlar:
    0
    teşekkür ederim.

    Çok teşekkür ederim cevap verdiğiniz için .henüz denemedim. evden yazıyorum. yarın dener dönüş yaparım aksi durumda.
     
  4. cengizkiylioglu

    cengizkiylioglu Yeni Üye

    Kayıt:
    24 Haziran 2011
    Mesajlar:
    4
    Beğenilen Mesajlar:
    0
    cvp

    Peki bunun başka bir yolu varmı Alter Table ile bunu yapmam mümkün değil mi ?
     
  5. skacurt

    skacurt Â

    Kayıt:
    4 Ocak 2008
    Mesajlar:
    4,311
    Beğenilen Mesajlar:
    2
    Meslek:
    Küfeci
    Şehir:
    İstanbul
    Bir alanda Identity belirlendiğinde SQL Server arkaplanda bir çok farklı işlem yapıyor. Bu herhangi bir kolon özelliği gibi bir özellik değil o yüzden cevabı "hayır".
    Fakat alternatif yollarla yapılmaz değil. test tablosu için :
    yeni bir alan yaratıp
    Kod:
    Alter Table [COLOR="#0000ff"]test Add [B]yeniartan[/B] Int
    GO
    yeniartan bu alanı identity özelliği kaldırılacak alana eşitleyip:
    Kod:
    Update [COLOR="#0000ff"]test set yeniartan = eskiartan
    GO
    eskiartan alan Primary Key ise kısıtı kaldırıp (varsa başka Constraint veya Index'ler de kaldırılmalı)
    Kod:
    [B]Alter Table [COLOR="#0000ff"]test Drop Constraint pk_test
    GO[/B]
    sonra eskiartan alanı kaldırabilir:
    Kod:
    Alter Table [COLOR="#0000ff"]test Drop Column eskiartan
    GO
    Ve yenairtan'ı tekrar eskiartan olarak adlandırabilirsiniz.
    Kod:
    Exec sp_rename '[COLOR="#0000ff"]test.yeniartan', eskiartan
    GO
    Kod:
    /* Varsa yeni alan için Index ve Constraint eklemeleri */
    Eğer identity özelliği kaldırılacak alanın hiç bir Constraint veya Index'i yok ise kırmızı sorgu dışındaki sorguları sırası ile çalıştırırsanız yeterli olur.

    Kafa karıştırmayan üst düzey SQL Server sorguları olmadan bu şekilde bir çözüm iş görebilir. Çünkü Management Studio bu tür bir işi yapmak istediğinizde tablonun bir kopyasını oluşturup tüm verileri bu yeni geçici tabloya kopyaladıktan sonra eski tabloyu silip yeni tabloya eski tablonun adını veriyor. Benim tarif ettiğimde aynı şeyin sadece sütun bazında olanı. Kolay gelsin.
     
  6. cengizkiylioglu

    cengizkiylioglu Yeni Üye

    Kayıt:
    24 Haziran 2011
    Mesajlar:
    4
    Beğenilen Mesajlar:
    0
    Çok sağolun bu benim işime daha çok yarayacak. İyi çalışmalar.