我使用的是mysql 5.1.72-0ubuntu0.10.04.1 (Ubuntu)。我想创造一个触发器来阻止玩家和墙壁之间的碰撞。
播放器和墙壁表都有一个x和y列。
我有个扳机:
CREATE TRIGGER checkcollision AFTER UPDATE ON players BEGIN
SELECT RAISE(ABORT, 'collision') FROM walls WHERE NEW.x=x AND NEW.y=y;
END;
考虑到我的mysql版本,我想知道如果有实际选中的行,此触发器是否会回滚更新。还是我必须手动做回滚?
另外,我的触发
我已经设置了,并试图从mysql查询中发送一个gearman作业。通常情况下,它只是工作正常。作为mysql查询的常规调用,如下所示:
SELECT gman_do_background("eventName", "data");
现在,当我试图从mysql触发器实现中发出这个调用时,问题就发生了。出现以下错误:
MySQL said: #1415 - Not allowed to return a result set from a trigger
所以,基本上,正如你所看到的
有别的方法可以让变速工打电话或者
不知怎么的,我用里面的齿轮人选择呼叫做了
我正在尝试在插入之前设置一个MySQL触发器:
BEGIN
SET NEW.order_date = STR_TO_DATE(NEW.order_date, '%d/%m/%Y');
END
但是当我导入包含"05/07/2017“之类记录的.csv时,触发器只导入NULL
知道我该怎么解决这个问题吗?
我写了这段代码:
CREATE TRIGGER testT BEFORE INSERT ON test3
FOR EACH ROW
IF NEW.a> NEW.b
THEN NEW.a=0
在mysql和test3表中(a,b)
我想要的是,如果用户在test3和a>b中插入了a和b,那么a就变成0了,我该怎么写呢?因为目前这段代码不起作用,我让MySQL说:
.#1064 -您的SQL语法出现了错误;请检查与MySQL服务器版本对应的手册,以获得在第2行“.a=0”附近使用的正确语法。
是否可以同时为表的插入和更新事件触发mysql触发器?
我知道我可以做到以下几点
CREATE TRIGGER my_trigger
AFTER INSERT ON `table`
FOR EACH ROW
BEGIN
.....
END //
CREATE TRIGGER my_trigger
AFTER UPDATE ON `table`
FOR EACH ROW
BEGIN
.....
END //
但是我该怎么做呢?
CREATE TRIGGER my_trigger
AFTER INSERT ON `table` AND
AFTER
SELECT COUNT(*) INTO @count FROM `tableName` WHERE `id` = OLD.id;
WHILE @count > -1 DO
SET @count = @count - 1;
/* loop logic in here */
END WHILE;
我有这个SQL,但是当我运行它时,我得到一个错误( Syntax),MySQL说它在WHILE @count > -1 DO SET @count = @count - 1;附近。我尝试过将while封装在BEGIN ... END;块中,但这丝毫不影响它。
由于MySQL
我想从下面的PHP代码中创建一个触发器。
$sql = 'delimiter $$';
$pdo->exec($sql);
$sql = 'create trigger avoid_empty_employee_insert before insert on `employee`
for each row begin
if name = "" then set name = null; end if;
end$$';
$pdo->exec($sql);
explain select id, nome from bea_clientes where id in (
select group_concat(distinct(bea_clientes_id)) as list
from bea_agenda
where bea_clientes_id>0
and bea_agente_id in(300006,300007,300008,300009,300010,300011,300012,300013,300014,300018,300019,300020,300021,300022)
)
当我尝试
我在使用从MySQL触发器中的另一个表中选择的值更新表中的行时遇到问题。我的触发器看起来像这样
CREATE TRIGGER update_user_last_login
AFTER INSERT or UPDATE ON last FOR EACH ROW
BEGIN
DECLARE _user_id INTEGER;
SELECT user_id INTO _user_id FROM user_profile WHERE user_name = NEW.username;
UPDATE user set last_login
这里,有一个带有“而不是更新”子句的触发器示例:
CREATE TRIGGER [dbo].[Test_PTA_Table_Update_trg]
-- ALTER TRIGGER [dbo].[Test_PTA_Table_Update_trg]
ON [dbo].[Test_PTA_Table]
INSTEAD OF UPDATE
AS
SET NOCOUNT ON
DECLARE @key int
SET @key = (SELECT TestTablePK FROM Inserted)
UPDATE Test_PTA_Table
SE