2017-06-12 5 views
0
existiert

Ich habe zwei Tabellen:SQL: parent löschen, wenn Kind nicht

tblEmployee

EmployeeID (PK), Name, Age, Department 

tblDesignation

EmployeeID(FK), Designation, DesignationID 

ich Hilfe brauche eine gespeicherte Prozedur zu schreiben, einen Mitarbeiterdatensatz löschen nur wenn es keinen Eintrag in der Benennungstabelle hat. (Lösche employeeID nur, wenn keine Bezeichnung zugewiesen ist)

Ich bin mir nicht sicher, ob ich die ON DELETE RESTRICT-Integritätsbedingung oder die NOT EXISTS-Klausel verwenden soll.

+1

schätzen würde, wenn Sie was teilen haben Sie bisher versucht haben, Ihre Ausgabe – Prathyush

+2

prozeduralen Code zu bekommen, ist ** sehr herstellerspezifischen ** - so fügen Sie bitte einen Tag angeben, ob Sie verwenden mysql, postgresql, sql-server, oracle oder db2 - oder etwas ganz anderes. –

+0

Ich benutze SQL Server. – Bee

Antwort

0

Nun können Sie unter Code für Ihren Zweck haben. Bitte entschuldigen Sie mit Syntax

create procedure usp_deleteemployee 
as 
begin 
    delete from tblEmployee 
    where id not in (select empid from tblDesignation); 
end 

Oder Sie können versuchen, mit existieren auch. Nicht sicher Syntax

DELETE tblEmployee 
FROM tblEmployee 
WHERE NOT EXISTS (SELECT 1 
        FROM tblDesignation 
        WHERE tblEmployee.Id = tblDesignation.empid) 
0

Sie könnten etwas wie unten versuchen.

DELETE 
E 
FROM 
tblEmployee E 
LEFT JOIN tblDesignation D 
ON E.EmployeeID = D.EmployeeID 
WHERE 
D.EmployeeID IS NULL 

Hoffe, dass dies hilft!

+0

Danke, aber ich möchte es mit ID löschen. Ich möchte nicht alle Datensätze löschen. Einen Parameter für EmployeeID erstellen und nur Datensätze löschen, für die ich den Wert der EmployeeID angegeben habe. – Bee

Verwandte Themen