• 18-05-2010, 20:18:29
    #1
    databaseteki tablomda id diye bir sütunum var.
    123 satır var.

    id sütunu 1,2,3, .... ,122,123 şeklinde gidiyor.

    istediğim şu ki mesela 35. satırdan sonrakiler 1 artsın.

    bunu nasıl yapabilirim.?

    UPDATE tablo SET id  = id + 1  WHERE id = 35 ORDER BY id DESC
    bu şekilde bir kod düşündüm ancak çalışmadı,
    error : #1062 - Duplicate entry '36' for key 'PRIMARY'

    teşekkürler
  • 18-05-2010, 20:38:31
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Dener misiniz?
    UPDATE tablo SET id  = id + 1  WHERE id >= 35
  • 18-05-2010, 20:45:11
    #3
    @arayan; Mantık hatası var işleminizde. id'si 35 olanı 36 yapmaya çalışıyorsunuz ama primary sütundaki veriler auto increment sanırım ve zaten daha önceden 36 nolu kayıt olduğundan o hatayı veriyor. Arttırma işlemine sondan başlamayı deneyebilirsin.
  • 18-05-2010, 20:53:38
    #4
    by_grafitus çok sağol.
    o şekilde çalıştı.

    @eagle_one; mantık hatası yok. en alt satırdan başlattım zaten : ORDER BY DESC
  • 18-05-2010, 20:54:57
    #5
    arayan adlı üyeden alıntı: mesajı görüntüle
    by_grafitus çok sağol.
    o şekilde çalıştı.

    @eagle_one; mantık hatası yok. en alt satırdan başlattım zaten : ORDER BY DESC
    Doğru
  • 18-05-2010, 20:57:34
    #6
    @by_grafitus :
    aklımdayken ;
    UPDATE tablo SET id  = id + 1  WHERE id >= 35 ORDER BY id DESC
    bu şekilde çalıştı. order by desc olmadan olmuyo.
  • 18-05-2010, 21:01:20
    #7
    yalnız bir şey sorcam.
    bu auto_increment olan sütun değerlerinin- id lerin yani değiştirilmesi tavsiye edilmiyor sitelerde.
    ne zararı varki ? neden tavsiye edilmiyor
  • 18-05-2010, 21:22:19
    #8
    değiştiğinde eğer sitende linklerde bir değişme varsa önerilmez. diğer türlü içerikte bir değişme ve sitende bir bozulma yoksa sorun olmayacaktır.
  • 18-05-2010, 23:05:54
    #9
    Kimlik doğrulama veya yönetimden onay bekliyor.
    UPDATE tablo SET id  = id + 1  WHERE id > 35 ORDER BY id DESC
    Bunu dene olmazsa
    select ile toployu çek daha sonra
    $yenideger=$id++;
    UPDATE tablo SET id=$yenideger  WHERE id > 35 ORDER BY id DESC
    şeklinde tabloya aktarabilirsin.