0

こんにちは、私は Oracle データベースの初心者で、いくつかの関数をテストしています。今、トリガーの代わりに問題があります。

これは私のコードです:

    CREATE TABLE team(
    teamid integer PRIMARY KEY,
    team VARCHAR2(100)
);


CREATE TABLE player(
    playerid integer PRIMARY KEY,
    player VARCHAR2(100),
    position VARCHAR2(100),
    teamid integer REFERENCES team(teamid)
);


INSERT ALL
  INTO team (teamid, team) VALUES (1, 'FC Bayern Muenchen')
  INTO team (teamid, team) VALUES (2, 'Manchester United')
SELECT * FROM DUAL;


INSERT ALL
  INTO player (playerid, player, position, teamid) VALUES (1, 'Manuel Neuer', 'goalkeeper', 1)
  INTO player (playerid, player, position, teamid) VALUES (2, 'Dante', 'defense', 1)
  INTO player (playerid, player, position, teamid) VALUES (3, 'Cesc Fabregas', 'midfield', 2)
  INTO player (playerid, player, position, teamid) VALUES (4, 'Lionel Messi', 'striker', 2)
  INTO player (playerid, player, position, teamid) VALUES (5, 'Arjen Robben', 'midfield', 1)
SELECT * FROM DUAL;


CREATE VIEW view_player AS
SELECT p.playerid,p.player,p.position, t.team FROM player p
INNER JOIN team t
ON  p.teamid = t.teamid;

両方のテーブルの自動インクリメントのシーケンスとトリガーを取得しました。これは私のトリガーの代わりです:

CREATE OR REPLACE TRIGGER view_player_insert
INSTEAD OF INSERT ON view_player
FOR EACH ROW
DECLARE
    NUMBER anzTeams;
    NUMBER teamID;
BEGIN
    SELECT count(*) INTO anzTeams FROM team WHERE team=:NEW.team;
    IF anzTeams > 0
    THEN
        INSERT INTO team(team) VALUES (:NEW.team);
    END IF;

    SELECT teamid INTO teamID FROM team WHERE team=:NEW.team;
    INSERT INTO player(player,position,fbid) VALUES (:NEW.player,:NEW.position,teamID);
END;

トリガーの代わりにこの例外が発生しました。

行 12 の例外: PL/SQL: SQL ステートメントは無視されました

構文エラーがあると思いますが、誰なのかわかりません。あなたが私を助けてくれることを願っています:)

グリーツ・ウルティ

4

1 に答える 1