我有这两个表:
CREATE TABLE COPIE(IDC VARCHAR2(10) PRIMARY KEY,
ETAT CHAR(1)
CHECK (ETAT IN ('M','P','D')),
IDO VARCHAR2(10) REFERENCES OUVRAGE(IDO));
CREATE TABLE PRET(IDC VARCHAR2(10) REFERENCES COPIE(IDC),
IDE REFERENCES ETUDIANT(IDE),
DATEP DATE,
DATER DATE,
AVIS VARCHAR2(7)
CHECK (AVIS IN ('LIKE','DISLIKE')),
IDB VARCHAR2(10) REFERENCES BIBLIO(IDB),
PRIMARY KEY(IDC,IDE,DATEP));因此,基本上我试图创建一个过程,在表COPIE中更新ETAT,其中其datep不为空,dater为空(在表pret中)
发布于 2019-11-29 10:51:21
据我所知,您可以按如下方式使用merge:
Merge into copie c
Using (select * from pret
Where dater is null and datep is not null) t
On (c.idc = t.idc)
When matched then
Update set c.etat = <value whichever you want>也可以直接使用update语句,如下所示
Update copie c
Set c.etat = <value whichever you want>
Where c.idc in
(select t.idc
From pret t
Where dater is null
and datep is not null)干杯!!
发布于 2019-11-29 06:35:49
事实上,IDC是两个表中的主键或主键的一部分,这真的不应该是问题。如果你想更新COPIE.ETAT,你应该能够这样说
UPDATE COPIE
SET ETAT = 'M'
WHERE IDC = 'whatever'这不会影响表PRET中的任何内容,因为您没有更改IDC字段,并且PRET也没有引用ETAT字段。
https://stackoverflow.com/questions/59096602
复制相似问题