2011-08-09 50 views
0

我想在SQL Server 2008中創建一個觸發器,它在第一個數據庫中更新後向第二個數據庫中插入一行。當我使用過程GETDATE時SQL Server 2008觸發拋出錯誤GETDATE

不過,我不斷收到一個錯誤..

(程序behaviour_alert,11號線附近有語法錯誤)'

這是因爲在使用觸發器的DATETIME。

這工作正常的查詢,我看不出爲什麼它不會作爲觸發器。 只能調整查詢來選擇當前的日期時間嗎?

下面

create trigger behaviour_alert 
on [database1].[dbo].[studconduct] 
for update 
as 
begin 

declare @conductdatetime as datetime 
set @conductdatetime = GETDATE() 

insert into database2.dbo.behaviouralert 
    select * 
    from studconduct 
    where curr_ind='Y' 
    and cond_pts >= '5' 
    and conduct_date >= @conductdatetime 

缺少什麼我在這裏查詢,去橫渡目光炯炯地看着這一點。也許我喝了太多咖啡。

編輯:這是我結束了,它的工作。我錯過了在觸發

create trigger behaviour_alert 
    on [database1].[dbo].[studconduct] 
    for update 
    as 
    begin 
    insert into database2.dbo.behaviouralert 
     select * 
     from studconduct 
     where curr_ind='Y' 
     and cond_pts >= '5' 
     and conduct_date >= datetime 
    end 
+0

你真的需要變量嗎? '和conduct_date> = GETDATE()'有什麼問題? –

+0

你在哪裏引用'插入'或'刪除'...當然,你會明智地使用'插入',並明確地命名你的列'insert'和'select' ... –

+0

@ todda.speot。是 - 行爲只發生在一年一次,在年底表被抹去並重新開始。每一天和各種不同的行爲。一個學生可以有多個加5但是不同的行爲。你認爲我需要 – IanN

回答

3

月底結束時,我覺得是不是GETDATE的問題()。 也許你只是在觸發結束時忘記了END?

+0

2對眼睛比1好。真棒matey,謝謝你,錯過了END。 – IanN