こんにちは、私は 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 ステートメントは無視されました
構文エラーがあると思いますが、誰なのかわかりません。あなたが私を助けてくれることを願っています:)
グリーツ・ウルティ