1
我的問題是basically this one,但對於MySQL而不是SQL Server。如何忽略觸發器中存儲過程的結果集?
我有一個返回結果集的存儲過程。
CREATE STORED PROCEDURE CreateFoo (input_id INT)
DECLARE result_id INT;
INSERT INTO FooTable (blah blah) VALUES (blah blah);
SELECT LAST_INSERT_ID() INTO result_id;
INSERT INTO OtherTable (x, y, blah) VALUES (input_id, result_id, blah);
SELECT result_id;
END
我有一個觸發其它表
CREATE TRIGGER MyTrigger AFTER INSERT ON Bar
FOR EACH ROW
BEGIN
CALL CreateFoo (NEW.a);
CALL CreateFoo (NEW.b);
END
但現在當我插入到酒吧我得到
ERROR 1415 (0A000) at line 5365: Not allowed to return a result set from a trigger
我明白這是爲什麼發生的事情,現在我需要安靜地忽略結果集從CreateFoo
。
在SQL Server中的答案是創建一個臨時表和INSERT INTO Temp CALL CreateFoo
但顯然你不能在MySql中做到這一點。
有沒有辦法在MySql中從觸發器中刪除結果集?
那麼在PDO層面,它會是這樣嗎? '$ q = $ db-> prepare(「CALL CreateFoo(?,@ tmp)」); bind_and_execute($ Q); $ q = $ db-> prepare(「SELECT @tmp」);'? – spraff
我不是程序員,對不起:)試試吧。 – fancyPants
@spraff:請參見[準備語句和存儲過程:示例4使用輸出參數調用存儲過程](https://secure.php.net/manual/en/pdo.prepared-statements.php#example-1009 )。 – eggyal