2011-11-25 125 views
0

可能重複:
Create Trigger in SQL Server如何創建觸發器?

我試圖創建一個觸發器,它說,客戶無法從下面我的表租超過200輛。請幫忙嗎?

CREATE TABLE Customer 
( 
    Cust_ID numeric primary key , 
    Cust_fname varchar(20), 
    Cust_lname varchar(20), 
    sex varchar(15), 
    Cust_street varchar(30), 
    Cust_parish varchar(30), 
    Cust_cc# numeric(30), 
    Cust_trn# numeric (20), 
); 

CREATE TABLE Vehicle 
(
    cust_ID numeric , 
    V_ID numeric primary key not null , 
    Body_type varchar(20), 
    License# varchar(20), 
    V_year varchar(15), 
    chassis# numeric(30), 
    unladen_weight varchar(30), 
    make varchar(30), 
    Color varchar (20), 
    Eng# varchar(20), 
    fuel_type varchar(30), 
    V_weight numeric (30), 
    Foreign key (Cust_ID)references Customer, 
); 

create table Car 
(
    V_ID numeric not null, 
    Foreign key (V_ID)references Vehicle, 
); 

create table truck 
( 
    V_ID numeric not null, 
    truck_length varchar(30) , 
    max_clearance numeric, 
    laden_weight numeric, 
    haul_cap numeric, 
    Foreign key (V_ID)references Vehicle, 
); 

Create table rents 
(
    Cust_ID numeric , 
    V_ID numeric not null, 
    desposit numeric, 
    date_of_rent date , 
    validID varchar (10), 
    proof_of_add varchar (10), 
    Foreign key (Cust_ID)references Customer, 
    foreign key (V_ID) references vehicle, 
); 
+1

你的問題是什麼?我只看到很多Create表,但沒有與觸發器本身相關。 –

+1

歡迎來到StackOverflow.This不是「請爲我的網站寫我的代碼」。您需要發佈您嘗試過的無法使用的內容,並解釋爲什麼它不像您期望的那樣工作,或者您收到了什麼錯誤。此外,您需要編輯標籤以指示您正在使用的數據庫,因爲它們在語法上有所不同。請記住,除了你的問題之外,我們沒有任何信息可以通過 - 我們無法從這裏閱讀你的屏幕(或你的想法)。 –

回答

0

這對夫婦cust_IDV_ID必須是唯一的?

在這些字段的表租金中創建唯一索引。

0

好了,第一件事是不同的DB中有不同的觸發程序等

然而,這裏是Postgres的一個例子。

CREATE OR REPLACE FUNCTION test_insert_trigger() 
    RETURNS "trigger" AS 
$BODY$ 
declare 
    cnt integer; 
begin 
    select count(*) into cnt from test where id = NEW.id; 
    if (cnt >= 2) then 
     raise exception 'Can not insert more than 2 of same thing.'; 
    end if; 
end; 
$BODY$ 
    LANGUAGE plpgsql VOLATILE; 
ALTER FUNCTION test_insert_trigger() 
    OWNER TO postgres; 


CREATE TRIGGER test_insert_trigger 
    BEFORE INSERT OR UPDATE 
    ON test 
    FOR EACH ROW 
    EXECUTE PROCEDURE test_insert_trigger(); 

它所要做的就是檢查您要插入或更新的行是否超過2行存在於數據庫中。更改查詢條件以適合您的應用程序。

但其實質就在那裏。