Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Önermiyorum - 7 (Update ettiğin tabloyu Where kısmında kullanamazsın)
#11
(04-01-2019, Saat: 09:49)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.MySQL'de aşağıdaki gibi bir güncelleme cümlesi çalışmıyor:

UPDATE Errors
SET
  Message = REPLACE(Message, 'MESSAGE_TEXT', 'DOMATES')
WHERE
  ID IN (
          SELECT ID
          FROM Errors
          WHERE
            Message LIKE '%MESSAGE_TEXT%'
        );

Verdiği hata ise şu: "You can't specify target table 'Errors' for update in FROM clause" .

Demek istediği ise, Update ettiğin tabloyu Where kısmında kullanamazsın. Peki, ya sebep ? Allah bilir ne...!!!

Merhaba Üstadım,

Daha önce benzer bir durumla karşılaştım ve temp tablosuz çözmüştüm. Şu şekilde çalışacaktır;

UPDATE Errors
SET
 Message = REPLACE(Message, 'MESSAGE_TEXT', 'DOMATES')
WHERE
 ID IN (SELECT * FROM (
         SELECT ID
         FROM Errors
         WHERE
           Message LIKE '%MESSAGE_TEXT%') x
       );

Bu şekilde bir alt sorgu içine alırsanız kontrol edemiyor aynı tablo olduğunu.

İyi çalışmalar...
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#12
Güncellediği tabloyu koşul kısmında kısıtladığına göre kendince bazı sebepleri vardır.

Belki bellek performans konusunda endişe etmiş olabilirler.

Faraza milyonlarca kayıt gelirse hepsini belleğe almak yerine kayıtlar arasında dolaşmak istemiştir,
bunu yaparken de kilitlerin çakışmasından kaçınmış olabilir.
Cevapla
#13
Başkaları (nerede ise MySQL hariç hepsi-biraz mübalağa ediyor olabilirim-) bu işi doğru düzgün ve layığı ile yapabiliyor ise -ki yapıyorlar-, o halde My SQL'de yapabilmeliydi. Sizler mazur görürsünüz yada görmezsiniz orasını bilemem, sizlerin bileceği husustur. Ben sadece bilgilendiriyor ve duyduğum rahatsızlığı dile getiriyorum.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#14
(04-01-2019, Saat: 12:23)mad85 Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(04-01-2019, Saat: 09:49)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.MySQL'de aşağıdaki gibi bir güncelleme cümlesi çalışmıyor:

UPDATE Errors
SET
  Message = REPLACE(Message, 'MESSAGE_TEXT', 'DOMATES')
WHERE
  ID IN (
          SELECT ID
          FROM Errors
          WHERE
            Message LIKE '%MESSAGE_TEXT%'
        );

Verdiği hata ise şu: "You can't specify target table 'Errors' for update in FROM clause" .

Demek istediği ise, Update ettiğin tabloyu Where kısmında kullanamazsın. Peki, ya sebep ? Allah bilir ne...!!!

Merhaba Üstadım,

Daha önce benzer bir durumla karşılaştım ve temp tablosuz çözmüştüm. Şu şekilde çalışacaktır;

UPDATE Errors
SET
 Message = REPLACE(Message, 'MESSAGE_TEXT', 'DOMATES')
WHERE
 ID IN (SELECT * FROM (
         SELECT ID
         FROM Errors
         WHERE
           Message LIKE '%MESSAGE_TEXT%') x
       );

Bu şekilde bir alt sorgu içine alırsanız kontrol edemiyor aynı tablo olduğunu.

İyi çalışmalar...

Teşekkür ederim, bu da Önermiyorum 7.5 olabilir bu durumda Smile
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#15
(04-01-2019, Saat: 13:43)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(04-01-2019, Saat: 12:23)mad85 Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba Üstadım,

Daha önce benzer bir durumla karşılaştım ve temp tablosuz çözmüştüm. Şu şekilde çalışacaktır;

UPDATE Errors
SET
 Message = REPLACE(Message, 'MESSAGE_TEXT', 'DOMATES')
WHERE
 ID IN (SELECT * FROM (
         SELECT ID
         FROM Errors
         WHERE
           Message LIKE '%MESSAGE_TEXT%') x
       );

Bu şekilde bir alt sorgu içine alırsanız kontrol edemiyor aynı tablo olduğunu.

İyi çalışmalar...

Teşekkür ederim, bu da Önermiyorum 7.5 olabilir bu durumda Smile

Rica ederim, Smile
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Önermiyorum - 4 Tuğrul HELVACI 9 1.027 25-01-2019, Saat: 15:03
Son Yorum: yhackup
  Önermiyorum - 9 (MySQL'de ALTER komutunun olmaması) Tuğrul HELVACI 13 1.072 16-01-2019, Saat: 09:01
Son Yorum: Tuğrul HELVACI
  Önermiyorum - 8 Tuğrul HELVACI 3 468 12-01-2019, Saat: 07:57
Son Yorum: Bay_Y
  Önermiyorum - 6 (Check_ConstrainsYok) uparlayan 9 912 04-01-2019, Saat: 09:13
Son Yorum: csunguray
  Önermiyorum - 5 (INT > BIGINT) Tuğrul HELVACI 9 802 02-01-2019, Saat: 09:57
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi