Привет, я новичок в Oracle Databases и тестирую некоторые функции. Теперь у меня есть проблемы с вместо триггеров.Исключение 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;
Я получил последовательность и триггер для автоматического инкремента обеих таблиц. Это мой Вместо того Trigger:
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;
Я получил это исключение с моей Вместо того Trigger:
Exception в строке 12: PL/SQL: SQL Statement игнорировали
I думаю, что у меня ошибка синтаксиса, но я не знаю, кто. Я надеюсь, что вы можете мне помочь :)
Greetz Ulti
А теперь я тоже не получил никаких ошибок. но если я сделать новую вставку я получил эти исключения:/ ORA-01422: Exakter Abruf Gibt Mehr ALS умирают angeforderte Zeilenzahl Zurück ORA-06512: в "SYSTEM.VIEW_PLAYER_INSERT", Zeile 11 ORA-04088: Fehler BEI дер Ausführung von Trigger 'SYSTEM.VIEW_PLAYER_INSERT' – Ulti
Я думаю, что вы хотите сделать IF anzTeams = 0, а не IF anzTeams> 0. – Paddy
О, боже мой, я такой слепой и отсталый! спасибо :) – Ulti