2017-04-04 63 views
0

在通過網絡拖網並仍未找到任何簡單的答案後,我希望有人可以就此提出建議。從ISNULL子句插入MySql子句

我想要做的就是向表中插入一個新行,如果該表中的值不爲空。在這種情況下,我有一個名爲「Events」的表。

事件表

Event_ID | Event_Name | Event_Interval | Event_Date | Event_Interval | Event_Repeat 
----------------------------------------------------------------------------------- 
1   My Event  14    2017-04-04 14    Completion 

有上我努力的方向條件;

IF EVENT_INTERVAL != NULL THEN 

    IF EVENT_REPEAT = "DUE" THEN 
    DATE_ADD(EVENT_DATE, INTERVAL EVENT_INTERVAL DAY) 
    ELSE 
    DATE_ADD(NOW(), INTERVAL EVENT_INTERVAL DAY) 
    END IF 

END IF 

所以:當用戶完成一個事件,如果間隔值不爲空,則插入一個新行到表,其中它添加間隔值要麼在事件中使用了一下僞代碼的最佳描述日期或當前日期,具體取決於「Event_Repeat」中的值。

到目前爲止,我得:

SELECT 
(IF(ISNULL((SELECT e.Event_Interval from events e where e.Event_ID = 1)) = 1, "NULL", "NOT NULL")) 

這工作絕對沒問題,可以分辨出間隔值是否爲空或不是。我試圖將插入語句合併/替換到這裏,但至今還沒有運氣。

如果有人可以幫助正確建構這個(或更好!)請隨時爲我還在四處尋找查詢等提前

感謝我的方式。

+0

'IF EVENT_INTERVAL!= NULL'永遠不會奏效,你不能這樣比較NULL,你必須使用'不是null'而不是'!= NULL' –

+0

我意識到這個感謝。在該實例中提供的代碼是僞代碼來描述我試圖實現的過程。 – billcox33

回答

0

您可以創建SP作爲

CREATE PROCEDURE update_event 
@event_id int 
AS 
BEGIN 
    DECLARE @event_repeat_temp nvarchar(200) 

    SELECT @event_repeat_temp = event_repeat FROM event_table WHERE event_id = @event_id 
    PRINT @event_repeat_temp 

    IF @event_repeat_temp = 'Due' 
    BEGIN 
     INSERT INTO event_table (event_id , event_name, event_interval, event_date, interval,event_repeat) VALUES (2,'My Event',14,'completion') 
    END 

    ELSE 

    BEGIN 
    //whatever you want 
    END 
END 

並稱之爲SP如下

EXEC update_event @event_id =1