0
'S'행을 업데이트하는 쿼리를 작성하려면 어떻게해야합니까? 현재 기본 키를 업데이트하여 숫자를 변경하고 싶습니다. 하위 쿼리가 필요한지 확실하지 않습니다. 점수를 업데이트 하시겠습니까? 같은 방법으로 "S"를 업데이트 하시겠습니까? "S"는 학생 번호를 나타내며 "C"는 코스 번호를 나타냅니다.트리거를 사용하여 Oracle에서 숫자 행의 데이터를 업데이트하는 방법
내 시도했지만 실패 쿼리는
update grades set s = 114 where s = 100;
'설정의이'나는으로 업데이트 할 무엇이다 인의 어디에 '그 세트의'수의 행을 찾고있다. 권리?
여기 내 쿼리, 트리거 및 선택 *에서 성적이 있습니다.
create table grades (
S varchar2(12),
C varchar2(10),
Score number(3,0),
Letter_Grade char(1),
Constraint pk_grades primary key (S),
Constraint CK_grades check (score between 0 and 100)
constraint lg_grades check (letter_grade in ('A','B','C','D','F'))
);
SET SERVEROUTPUT ON
CREATE OR REPLACE TRIGGER MARK_BU
BEFORE UPDATE OF score ON grades
FOR EACH ROW
DECLARE
BEGIN
:NEW.letter_grade :=
CASE
WHEN :NEW.score >= 80 THEN 'A'
WHEN :NEW.score >= 70 THEN 'B'
WHEN :NEW.score >= 60 THEN 'C'
WHEN :NEW.score >= 50 THEN 'D'
ELSE 'F'
END ;
DBMS_OUTPUT.PUT_LINE ('Numeric_grade was updated to: ' || :NEW.score);
DBMS_OUTPUT.PUT_LINE ('Letter_grade was calculated to be:' || :NEW.letter_grade);
END;
S C SCORE L
------------ ---------- ---------- -
100 CST8255 49 F
101 CST8255 59 D
102 CST8255 69 C
103 CST8255 79 B
104 CST8255 89 A
쿼리에 "실패"한 내용은 무엇입니까? 문법적으로 유효하며 'SCORE'가 89이고 SCORE가 95 인 행을 업데이트합니다. 'S'가 104이고 C가'CST8255' 인 행을 갱신하고 변경합니다 'SCORE' ~ 95. –
오, 혼란스러워 혼란 스러웠습니다. 와우. 이거 쉽지. – GivenPie
기본 키 값을 변경하는 것이 구문 적으로 적합하지만 일반적으로 기본 키가 잘못 선택되었음을 나타냅니다. 변경할 기본 키 값을 참조하는 외래 키가있는 하위 테이블이있는 경우 상위 열을 변경하면 해당 제약 조건으로 인해 오류가 발생합니다. –