Oracle 更改表,以允许团队支持多个慈善机构,如果他们希望更改数据库以满足此要求



嗨,我需要以下问题的帮助:

根据多个团队的要求,Run Monash希望允许一个团队提供支持 几个慈善机构,如果他们愿意的话。如果一个团队确实支持多个慈善机构,他们必须提名, 一个慈善机构作为他们的主要慈善机构,他们将提供主要支持。 更改数据库以满足此要求。 做出此更改后,将"救世军"作为第二个慈善机构添加到1号团队。

团队表当前如下所示:

TEAMNO TEAMNAME                       CARNDATE  TEAMNOMEMBER CHARNAME                          ENTRYID
---------- ------------------------------ --------- ------------ ------------------------------ ----------
1 Gentle Earth                   04/APR/18            2 Amnesty International                   5
2 Happy Feet                     04/APR/18            2 Beyond Blue                            14
3 Avengers                       06/MAY/19            2 Salvation Army                         37
4 Footloose                      06/MAY/19            3 Salvation Army                         38
5 Happy Feet                     06/MAY/19            4 Amnesty International                  30

这就是我尝试的

alter table team add (
seccharname       VARCHAR2(30),
primechar         VARCHAR2(30),
);
UPDATE team
INSERT into team (teamno,seccharname,primechar) VALUES ( values (1,'salvation army','Amnesty International');

不知道该怎么做才能满足提出的问题。

你的 alter 语句需要一点点更正。您已经有 CHARNAME 列,因此您只能将其重命名为 primechar。

ALTER TABLE team RENAME CHARNAME TO primechar;

然后只需更正您的更新语句 -

UPDATE team
SET seccharname = 'salvation army',
primechar = 'Amnesty International'
WHERE TEAMNO = 1;

我认为MERGE语句最适合您的情况:

MERGE INTO team t
USING ( SELECT 1 as teamno,
'salvation army' as seccharname,
'Amnesty International' as primechar 
FROM dual
) t2
ON (t2.teamno=t.teamno)
WHEN MATCHED THEN
UPDATE SET seccharname=t2.seccharname, primechar=t2.primechar
WHEN NOT MATCHED THEN
INSERT (teamno, seccharname, primechar) 
VALUES ( t2.teamno, t2.seccharname, t2.primechar )

如果键列(teamno( 匹配,将填充新添加的空列,否则它们将插入其余列(teamnamecarndateteamnomember(的空值。

相关内容

最新更新