MYSQL Bir Tabloda Veri Silinince Diğerinden Silme
-
Merhaba müridler, şimdi istediğim şey şu;
Bir tablom var adı "tedarikciler" ve bu tablonun "yetkili_id" si "users" tablomda bulunan userin id'sini barındırıyor.
Ben istiyorum ki eğer tedarikçi silinirse otomatik olarak "users" tablosundaki kayıtta silinsin.
Foreign key atadım ama tutturamadım nasıl yapacağımı bir el atıverin.
-
tedarikciler icin calistirdigin sql komutunu aynen users icinde uygulasan haci?
-
tam olarak aradigin sey oldugunu dusunuyorum
https://stackoverflow.com/questions/24203055/one-to-one-relationship-in-mysql-and-cascade-delete
-
-
abdullahazad bunu yazdı
tedarikciler icin calistirdigin sql komutunu aynen users icinde uygulasan haci?
baska bir alternatif, ama dogru bir yol degil. "1 sql sorgusu > 2 sql sorgusu"
-
abdullahazad bunu yazdı
tedarikciler icin calistirdigin sql komutunu aynen users icinde uygulasan haci?
Hocam 2 farklı solution da controllerların farklı farklı yerlerinde delete işlemi yapmışlar onları tek tek bulup eklemek gereksiz bence vardır elbet bunun bir yolu
-
end bunu yazdı
cascade nedir?
Alternatif: trigger nedir?
Teşekkürler bir bakayım
-
relationship kur ve casecade delete yap.
Ya da trigger da yapabilirsin.
-
hiçbir verini silme
-
neverland bunu yazdı
hiçbir verini silme
belki log niyetine farkli bi dbye yaziyo "silinen" tedarikcileri :) bilemeyiz...
-
DELIMITER $$ CREATE TRIGGER `delete_user` BEFORE DELETE ON `tedarikci_tablosu` FOR EACH ROW BEGIN DELETE FROM users WHERE OLD.id = tedarikci_id ; END $$ DELIMITER ;
bu tarz bir sql isini gorecektir haci. tedarikci tablosundan bir veri sildiginde mysql otomatik olarak users'tanda silecek. mysql'in trigger bolumunde bir kez calistirman yeter. guzel tarafi kullandigin sistemde kodsal degisiklik yapmana gerek yok.hatta istersen yine bir trigger daha olusturup silinin verilerin log kaydını farkli bir tabloya daha sonra incelemek icin yazdirabilirsin.
gerekirse pm at yardim edeyim.
@end haklısın kanka.