Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Triggers 触发器检查一个表中的重复值_Triggers - Fatal编程技术网

Triggers 触发器检查一个表中的重复值

Triggers 触发器检查一个表中的重复值,triggers,Triggers,我有一个足球系统数据库,其中有一个表match: 匹配ID int主键 Home\u ID int(表俱乐部的外键) 访客ID int(表俱乐部的外键) 我已经写了一个触发器来检查,我成功地创建了,但没有更新 CREATE TABLE Clubs ( Club_ID int, Name varchar2(100), Stadium varchar2(100), League_ID int, primary key(Club_ID), forei

我有一个足球系统数据库,其中有一个表
match

  • 匹配ID int
    主键
  • Home\u ID int
    (表
    俱乐部的外键
  • 访客ID int
    (表
    俱乐部的外键
我已经写了一个触发器来检查,我成功地创建了,但没有更新

CREATE TABLE Clubs
(
    Club_ID int,
    Name varchar2(100),
    Stadium varchar2(100),
    League_ID int,
    primary key(Club_ID),
    foreign key(League_ID) references Leagues(League_ID)
)

CREATE TABLE Matches
(
    Match_ID int,
    Home_ID int,
    Visitor_ID int,
    Official_ID int,
    DateMatch date,

    primary key(Match_ID),
    foreign key(Home_ID) references Clubs(Club_ID),
    foreign key(Visitor_ID) references Clubs(Club_ID),
    foreign key(Official_ID) references Officials(Official_ID)
)

CREATE OR REPLACE TRIGGER Check_Duplicate
before insert or update on Matches
FOR each ROW
   declare v_dup number;
begin
    select count(Match_ID) INTO v_dup 
    from Matches 
    where :NEW.Home_ID =:NEW.Visitor_ID;

    if v_dup > 0 then
        Raise_Application_Error (-20100, 'This team already exists. The insert is cancelled.');
    end if;
end;
触发器是高度特定于供应商的-因此请添加一个标记来指定您是否正在使用
mysql
postgresql
sql服务器
oracle
db2
-或其他完全特定于供应商的触发器。因此,请添加一个标记来指定您是否正在使用
mysql
postgresql
sqlserver
oracle
db2
——或者完全其他的东西。