• 12-04-2022, 16:02:40
    #10
    dev
    Kurumsal Üye
    Turkic adlı üyeden alıntı: mesajı görüntüle
    Şimdi bu aşağıdaki aynı verinin eklenmesini engellememiş mi oluyor yani?

    INSERT INTO subscribers(email)
    VALUES('john.doe@gmail.com');
    
    INSERT INTO subscribers(email)
    VALUES('john.doe@gmail.com'), ('jane.smith@ibm.com');
    
    Error Code: 1062. Duplicate entry 'john.doe@gmail.com' for key 'email'
    Error Code: 1062. Duplicate entry hatasini alabilmeniz icin unique index kullanmis olmaniz lazim. INSERT IGNORE sadece hatayi ignore eder. Mesele coklu kayit yaptiginiz sirada bir hata alirsaniz butun satirlari etkiler ama INSERT IGNORE yaparsaniz hata veren satiri goz ardi eder.
    https://www.mysqltutorial.org/mysql-insert-ignore/ linkteki ornekte gordugunuz "email VARCHAR(50) NOT NULL UNIQUE" var.
  • 12-04-2022, 16:04:23
    #11
    Noroc adlı üyeden alıntı: mesajı görüntüle
    Error Code: 1062. Duplicate entry hatasini alabilmeniz icin unique index kullanmis olmanizi lazim. INSERT IGNORE sadece hatayi ignore eder. Mesele coklu kayit yaptiginiz sirada bir hata alirsaniz butun satirlari etkiler ama INSERT IGNORE yaparsaniz hata veren satiri goz ardi eder.
    .
    Olabilir, kodu kendim denemedim ama UNIQUE tek başına bu işi yapıyorsa INSERT IGNORE neden kullanılıyor?
  • 12-04-2022, 16:08:55
    #12
    dev
    Kurumsal Üye
    Turkic adlı üyeden alıntı: mesajı görüntüle
    Olabilir, kodu kendim denemedim ama UNIQUE tek başına bu işi yapıyorsa INSERT IGNORE neden kullanılıyor?
    Unique ve INSERT IGNORE tamamen farkli amaclar icin. Unique olmadan da INSERT IGNORE kullanabilirsiniz. INSERT IGNORE hatalari goz ardi etmek icin. 1000 tane kayit icin tek sorgu kullanabilirsiniz ve hata alirsaniz hic bir kayit tabloya yazilmaz, ama INSERT IGNORE derseniz hatali satirlar elenir, basirili olanlar tabloya kayit edilir.

    Soyle dusunun 1000 email adresi geliyor saatlik. ve email sutunu unique olmak zorunda. Simdi siz 1000 tane email icin dongu yapip tek tek kayit etmeyi deneyebilirsiniz ve hata alirsaniz devam edersiniz ya da 1000 tane mail'i tek tek kontrol edip kayitli degilse yeni bir array'e atayip buradaki verileri tek bir insert sorgusu ile halledebiliirsiniz.

    Bu kadar aksiyona gerek yok diye direkt gelen ham datayi insert ignore into diyip kaydetmeye calisirsiniz. Eger duplicated satir cikarsa mysql onu kendi icinde halletmis olacak.
  • 12-04-2022, 16:10:43
    #13
    @lookout; hocamın yardımı ile sorunu çözdük kendisine teşekürlerimi iletiyorum. İlgilenip yardım eden herkese tekrardan teşekkürler
  • 12-04-2022, 16:13:56
    #14
    Cevabınıza göre teşekkür ediyorum. Geçmişte UNIQUE kullanmışlığım vardı ama UNIQUE daha çok PRIMARY KEY için kullanılıyor gibi hatırımda kalmış.