【发布时间】:2019-10-05 06:03:06
【问题描述】:
我正在从事我的大学项目,我需要一些有关 Oracle 数据库的帮助。
我有两张桌子USERFORM 和ACADEMICTRAINING。
用户表单
Name Null? Type
-------------- -------- ------------
USER_ID NOT NULL NUMBER(5)
FIRSTNAME NOT NULL VARCHAR2(30)
LASTNAME NOT NULL VARCHAR2(30)
EMAIL NOT NULL VARCHAR2(60)
BORN_DATE NOT NULL DATE
PHONE NOT NULL VARCHAR2(20)
ACCESSPASSWORD NOT NULL VARCHAR2(30)
学术培训
Name Null? Type
-------------- -------- -------------
AT_ID NOT NULL NUMBER(5)
START_DATE NOT NULL DATE
END_DATE NOT NULL DATE
INSTITUTION NOT NULL VARCHAR2(100)
COURSE NOT NULL VARCHAR2(70)
AT_DESCRIPTION VARCHAR2(200)
AT_ID 是在USER_ID 列上引用USERFORM 的外键。
我想知道是否有某种方法可以UPDATE 一行而不影响具有相同外键的其他行。
【问题讨论】:
-
要仅更新 1 行,您需要一个主键(或一组列)来仅定位 1 行。但是,如果您的数据库中没有这样的组合并且这只是 1 次练习,我想使用您正在使用的工具(例如 SQL Developer)是可行的。
-
很高兴知道,我需要一个具有更多增长能力的数据库,我会根据您的建议工作,谢谢!
-
您需要更新哪些表和列,是什么阻止了您这样做?还有,PL/SQL 代码是怎么来的?
-
我需要更新所有列上的
ACADEMICTRAINING。我可以更新,但是,如果我使用其他行上使用的外键更新一行,则两者都会更新,这对我不利。基本上,现在我使用的是UPDATE academictraining SET ~columns and values~ WHERE at_id = userform.user_id。该外键意味着用户可以对其个人资料进行一项或多项学术培训,但我需要控制他正在更新的行。
标签: sql oracle join sql-update