mysql 觸發器 if 語句 update
@sqlz ='select asd from flkg';
EXECUTE(@sqlz);
----------
首先,mysql下動態語句不是這樣寫的,另外,觸發器里不能允許返回結果集的.
這里我是希望他能中斷更新!
---------------------
你的意思是不是要中斷后面的
"
SET amount =@amountmm
WHERE CODE=* AND whcode = * ;
"
這部分?
如果是的話,那這樣改下:
DELIMITER $$
USE `eerp`$$
DROP TRIGGER /*!50032 IF EXISTS */ `material_update`$$
CREATE TRIGGER `material_update` AFTER UPDATE ON `sf_material`
FOR EACH ROW BEGIN
IF *ng = 'Y' THEN
SET @amountmm = (SELECT * FROM warehouse WHERE CODE=* AND whcode = *);
IF @amountmm >=0 THEN
UPDATE warehouse
SET amount =@amountmm
WHERE CODE=* AND whcode = * ;
END IF ;
END IF;
END;
$$
DELIMITER ;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
"我是要中斷更新。。不是后面。。。嚴格說就是這個表sf_material更新和后面的那個表warehouse更新也一起中斷!"
---------------------------------------------------------------
因為mysql下觸發器內不支持rollback,所以,變換一個方式來處理,如下:
那觸發器部分這么寫(注意:一定要使表TB_error_rollback在你的庫中不允許存在):
CREATE TRIGGER `material_update`
BEFORE UPDATE
ON `sf_material`
FOR EACH ROW
BEGIN
IF *ng = 'Y' THEN
SET @amountmm = (SELECT amount- * FROM warehouse WHERE CODE=* AND whcode = *);
IF @amountmm <0 THEN
update TB_error_rollback set name=1;
END IF;
UPDATE warehouse
SET amount =@amountmm
WHERE CODE=* AND whcode = *;
END IF;
END;
mysql 觸發器 if 語句 update
@sqlz ='select asd from flkg'; EXECUTE(@sqlz);----------首先,mysql下動態語句不是這樣寫的,另外,觸發器里不能允許返回結果集的.這里我是希望他能中斷更新!---------------------你的意思是不是要中斷后面的"SET amount =@amountmm WHERE CODE=* AND whcode = * ;"這部分?如果是的話,那這樣改下:DELIMITER $$USE `eerp`$$DROP TRIGGER /*!50032 IF EXISTS */ `material_update`$$CREATE TRIGGER `material_update` AFTER UPDATE ON `sf_material` FOR EACH ROW BEGIN IF *ng = 'Y' THEN SET @amountmm = (SELECT * FROM warehouse WHERE CODE=* AND whcode = *); IF @amountmm >=0 THEN UPDATE warehouse SET amount =@amountmm WHERE CODE=* AND whcode = * ; END IF ; END IF; END;$$DELIMITER ; &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"我是要中斷更新。
。不是后面。
嚴格說就是這個表sf_material更新和后面的那個表warehouse更新也一起中斷!"---------------------------------------------------------------因為mysql下觸發器內不支持rollback,所以,變換一個方式來處理,如下:那觸發器部分這么寫(注意:一定要使表TB_error_rollback在你的庫中不允許存在):CREATE TRIGGER `material_update` BEFORE UPDATE ON `sf_material` FOR EACH ROW BEGIN IF *ng = 'Y' THEN SET @amountmm = (SELECT amount- * FROM warehouse WHERE CODE=* AND whcode = *); IF @amountmm <0 THEN update TB_error_rollback set name=1; END IF; UPDATE warehouse SET amount =@amountmm WHERE CODE=* AND whcode = *; END IF;END;。
sql IF語句求助 需要把兩個update用if 語句優化成1個update
Update t_rpcontract set t_*5=
case when t_*s = 2 then CONVERT(varchar(100), GETDATE(), 23)
when t_*s = 1 then ''
else t_*5
from t_rpcontract
inner join Inserted on t_*actID=*actID
SQL語句UPDATE指令是什么
我們有時候可能會需要修改表格中的資料。
在這個時候,我們就需要用到 UPDATE 指令。這個指令的語法是: UPDATE "表格名" SET "欄位1" = [新值] WHERE {條件} 最容易了解這個語法的方式是透過一個例子。
假設我們有以下的表格: Store_Information 表格 store_nameSalesDate Los Angeles$1500Jan-05-1999 San Diego$250Jan-07-1999 Los Angeles$300Jan-08-1999 Boston$700Jan-08-1999 我們發現說 Los Angeles 在 01/08/1999 的營業額實際上是 $500,而不是表格中所儲存的 $300,因此我們用以下的 SQL 來修改那一筆資料: UPDATE Store_Information SET Sales = 500 WHERE store_name = "Los Angeles" AND Date = "Jan-08-1999" 現在表格的內容變成: Store_Information 表格 store_nameSalesDate Los Angeles$1500Jan-05-1999 San Diego$250Jan-07-1999 Los Angeles$500Jan-08-1999 Boston$700Jan-08-1999 在這個例子中,只有一筆資料符合 WHERE 子句中的條件。 如果有多筆資料符合條件的話,每一筆符合條件的資料都會被修改的。
我們也可以同時修改好幾個欄位。這語法如下: UPDATE "表格" SET "欄位1" = [值1], "欄位2" = [值2] WHERE {條件}。
轉載請注明出處華閱文章網 » updateif語句