0

登録されている学生数のカウントを更新するトリガーを作成するのに苦労しています。これが私のテーブルのセットアップ方法です。この最初のコード ブロックは、講師から提供されました。学生が登録または削除されるたびに、登録されている学生数の適切なカウントで register_count テーブルを更新する必要があります。

Create table Registered
(
    ssn numeric,
    code char(10),
    year int,
    semester char(10),
foreign key (ssn) references Student(ssn),
foreign key (code) references Course(code),
    primary key (ssn,code,year,semester)
);

create table Register_Count
(
    code char(10),
    year int,
    semester char(10),
    count int default 0,
    primary key (code, year, semester)
);

これまでのトリガーでの私の試みは次のとおりです。「マルチパート識別子をバインドできませんでした」というエラーが表示され続けます。

 CREATE TRIGGER updateCount ON registered
    AFTER UPDATE, DELETE, INSERT
    AS
    UPDATE register_count SET 
        code = (select code from inserted), 
        year = (select year from inserted),
        semester = (select semester from inserted), 
        count = (select count(*) from registered) 
    WHERE Register_Count.code = inserted.code
GO
4

1 に答える 1

0

大文字と小文字を区別する照合を行うことができ、次の行を変更する必要があります。

WHERE Register_Count.code = inserted.code

に:

WHERE register_count.code = inserted.code

この場合、register_count を更新していますが、WHERE 句に、UPDATE ステートメントで参照していない「挿入済み」への参照があります。

私はあなたがこのようなものが欲しいと思います:

UPDATE register_count 
from register_count inner join inserted
on Register_Count.code = inserted.code
SET 
code = inserted.code, 
year = inserted.year,
semester = inserted.semester, 
count = (select count(*) from registered)
于 2013-09-23T00:53:56.967 に答える