0
create table Person(
    SSN INT,
    Name VARCHAR(20),
    primary key(SSN)
);
create table Company(
CompanyID INT,
Name VARCHAR(20)
primary key(SSN)

create table Car(
    PlateNr INT,
    Model VARCHAR(20),
    primary key(PlateNr)
);

create table CarOwner(
    SSN INT,
    PlateNr INT,
    primary key(SSN, PlateNR)
    foreign key(SSN) references Person (SSN),
    foreign key(PlateNr) references Car (PlateNr)
);

create table CompanyWorker(
    SSN INT,
    CompanyID INT
    primary key(SSN, CompanyID),
    foreign key(SSN) references Person (SSN),
    foreign key(CompanyID) references Company (CompanyID)
);

Insert into Person(SSN, Name) VALUES ('123456789','Max');
Insert into Person(SSN, Name) VALUES ('123456787','John');
Insert into Person(SSN, Name) VALUES ('123456788','Tom');

insert into Company(CompanyID, Name) VALUES('1','IKEA');
insert into Company(CompanyID, Name) VALUES('2','Starbucks');

Insert into Car(PlateNr, Model) VALUES ('123ABC','Volvo');
Insert into Car(PlateNr, Model) VALUES ('321CBA','Toyota');
Insert into Car(PlateNr, Model) VALUES ('333AAA','Honda');

Insert into CarOwner(SSN, PlateNr) VALUES ('123456789','123ABC');
Insert into CarOwner(SSN, PlateNr) VALUES ('123456787','333AAA');
Insert into CarOwner(SSN, PlateNr) VALUES ('123456788','321CBA');

insert into CompanyWorker(SSN, CompanyID) VALUES('123456789','1');
insert into CompanyWorker(SSN, CompanyID) VALUES('123456787','1');

これは私のテーブルであり、それらのテーブルに挿入します。私が抱えている問題は、人を削除することです。「Person」テーブルから人を削除できるようにしたい、例

DELETE FROM Person WHERE SSN = '123456789';

しかし問題は、その人が関係している他のすべてのテーブルからその人を削除しなければならないことです。Person は、CarOwner および CompanyWorker と関係があります。確かに、一度に 3 つの個別の削除ステートメントを単純に実行できます。

DELETE FROM Person WHERE SSN = '123456789';
DELETE FROM CarOwner WHERE SSN = '123456789';
DELETE FROM CompanyWorker WHERE SSN = '123456789';

しかし、この SSN が CompanyWorker に存在しない場合、そこに存在しないものを削除しようとしているため、問題が発生します。したがって、何らかの方法で削除する前に、最初に存在するかどうかを何らかの方法で確認できる必要があります。これが私の問題です。

4

1 に答える 1