Bir Departman Kimliği sütununa sahip Şirketler adlı bir tablo var. EmployeeID sütunu olan bir Departaments tablosu da var. Tabii ki bir de çalışan tablom var. Sorun şu ki, bir şirketi silmek istiyorum, bu yüzden önce tüm çalışanları ve şirketteki tüm departamentleri silmek zorundayım. Cascade Sil bir seçenek değildir, bu nedenle iç içe geçmiş işlemleri kullanmak istiyorum. SQL konusunda yeniyim, bu yüzden yardımın için minnettarım.İç içe SQL Server işlemi kaskad silme gerçekleştiriliyor
0
A
cevap
4
kullandığınız platforma bağlı ediyorum İşte. o bir DELETE içinde JOIN gerçekleştirmek için doğru SQL sözdizimi var, bir yazım hatası değil,
BEGIN TRAN
DELETE FROM Employee
FROM Employee
INNER JOIN Department ON Employee.DepartmentID = Department.DepartmentID
INNER JOIN Company ON Department.CompanyID = Company.CompanyID
WHERE Company.CompanyID = @CompanyID
DELETE FROM Department
FROM Department
INNER JOIN Company ON Department.CompanyID = Company.CompanyID
WHERE Company.CompanyID = @CompanyID
DELETE FROM Company
WHERE Company.CompanyID = @CompanyID
COMMIT TRAN
Not GELEN çift: Yalnızca bir asıl işlemi gerekir.
Her ifade atomiktir, ya DELETE'nin tamami basar ya da basarisiz olur; bu, bu durumda önemli degildir, çünkü tüm grup ya basar ya da basarisiz olur.
BTW-Sanırım ilişkilerinizi geri aldınız. Departmanın bir Çalışan Kimliği bulunmayacak, Çalışan bir Departman Kimliği alacaktı.
0
Sorunuzu yanıtlamıyorum, ancak yabancı tuşlar yoludur, neden bir seçenek değil? İç içe işlemler gelince
onlar:
BEGIN
delete from Employee where departmentId = 1;
BEGIN
delete from Department where companyId = 2;
BEGIN
delete from Company where companyId = 2;
END
END
END
Programlı elbette farklı görünüyor, ama bu iç içe geçmiş işlem neden ihtiyaç emin değilim sen
İlgili konular
- 1. SQL Server - güncelleştirirken iç birleştirme
- 2. sql iç içe durum bildirimleri
- 3. Doktrin varlıkları silme işlemi silme, performans karşılaştırması
- 4. İmleç olmadan SQL Server tablosundan kayıtları silme
- 5. İç içe XML'yi SQL tabloya ayrıştırma
- 6. Kiril başlıklı silme işlemi
- 7. IIS7 + NHibernate: Silme işlemi
- 8. WPF Treeview silme işlemi
- 9. İç içe geçmiş bir hash'dan belirli bir öğeyi silme
- 10. Java: iç içe türetilmiş türetilmiş türlerde (yansıma) iç içe geçme
- 11. İç içe tekrarlayıcıda ItemDataBound
- 12. jQuery Datatables: Satır silme işlemi
- 13. Öğe çerçevesindeki kaskad silme (tür başına kalıtım başına tablo)
- 14. SQLite vs SQL Server
- 15. Yii2'de ham SQL sorguları gerçekleştiriliyor mu?
- 16. Sql Server ve Mysql Server arasında eşitleme
- 17. İç içe tekrarlayıcı
- 18. SQL Server Kırma işlemi (ustalar gibi ortak veri paylaşımı)
- 19. RoR iç içe öznitelikleri,
- 20. İç içe geçmiş saklı yordamları saklı yordamları aramada kullanın Sql Server 2008
- 21. SQL Server 2008
- 22. SQL Server
- 23. Sql Server
- 24. [SQL Server]
- 25. SQL Server
- 26. SQL Server
- 27. SQL Server
- 28. SQL Server
- 29. SQL Server
- 30. SQL Server
Şirketinizdeki INNER JOIN'leri kaldırmak için sorgularınız en iyi duruma getirilebilir. Yoksa bu SQL Server'ın otomatik olarak yapacağı bir şey mi olurdu? – rpetrich
Haklısınız. Ben sadece açık olması için onları ekledim, ancak WHERE yan tümcesini değiştirmek için: WHERE Department.CompanyID = @CompanyID – Brannon