2013-07-18 122 views
0

我在2008年MYSQL工作,我創建了一個簡單的表:填充柱,用默認值

create table Productos (
nombre char (30), 
size int, 
nota char (40)) 

我需要創建一個插入觸發器。當我插入值時,我只需要提供​​的值,sizenota需要爲NULL

觸發需要填充nota如果size從插入是> 50,它需要填充字mayor列,如果它是< 50menor

這是我曾嘗試:

CREATE TRIGGER Inserta 
ON Productos 
for INSERT 
AS 
BEGIN 
IF EXISTS(
      SELECT NULL 
      FROM Productos 
     ) 
      Begin 
    UPDATE Productos 
    SET nota = 
     CASE 
      WHEN (select size 
    from inserted) > 50 
       THEN 'Mayor' 
    Else 'Menor' 
     END 
    from 
    inserted 
    End 
    End 

這種情況正在改變所有列,而不僅僅是那些插入的值。我是一個新手,我很困惑。

任何人都可以啓發我嗎?

+3

您是不是指Windows 2008上的SQL Server 2008或MySQL? – Prix

+0

只需更改列定義並將其設置爲DEFAULT NULL –

回答

0
CREATE TRIGGER Inserta BEFORE INSERT on Productos 
SET nota = CASE WHEN new.size > 50 THEN 'Mayor' Else 'Menor' END; 
+0

感謝您的回覆。我嘗試了CREATE TRIGGER Inserta BEFORE INSERT on Productos SET nota = CASE when new.size> 50 THEN'Mayor'Else'Menor'END;但它給我一個錯誤:Msg 102,Level 15,State 1,Procedure Inserta,Line 1 'BEFORE'附近語法不正確。 @Joe Frambach – user2597195

+0

對不起,我的意思是MySQL上的Windows 8. @Prix – user2597195

+0

我需要做什麼來更新只插入的值,而不是整個表? – user2597195