我对MySql中的触发器有问题。创建触发器时,会出现语法错误。
CREATE TABLE user (
id int NOT NULL,
completeName varchar(255) NOT NULL,
email varchar(255) NOT NULL,
passw_hash varchar(255) NOT NULL,
accType varchar(255) NOT NULL,
PRIMARY KEY (id)
);
create or REPLACE trigger test
AFTER insert on user
FOR EACH ROW
BEGI
我正在MySQL 8上尝试添加一个check约束:
ALTER TABLE `table` ADD CHECK (
(`column_a` IS NULL AND `column_b` IS NOT NULL) OR
(`column_a` IS NOT NULL AND `column_b` IS NULL)
);
但我一直在找
列'column_b‘不能用于检查约束'table_chk_1':在外键约束'table_ibfk_2’引用操作中需要。
我在互联网上找不到任何关于这个错误的参考,我也不明白问题出在哪里。column_a和co
我已经设置了,并试图从mysql查询中发送一个gearman作业。通常情况下,它只是工作正常。作为mysql查询的常规调用,如下所示:
SELECT gman_do_background("eventName", "data");
现在,当我试图从mysql触发器实现中发出这个调用时,问题就发生了。出现以下错误:
MySQL said: #1415 - Not allowed to return a result set from a trigger
所以,基本上,正如你所看到的
有别的方法可以让变速工打电话或者
不知怎么的,我用里面的齿轮人选择呼叫做了
我已经在互联网上寻找了很多关于mysql error #1442的原因,上面说
无法更新存储函数/触发器中的表“unlucky_table”,因为调用此存储函数/触发器的语句已经使用了它
有人说这是mysql中的一个bug,或者它没有提供的特性。
一些人声称,这是由于递归行为。
现在我不明白为什么这是递归的。我有一个例子,其中我有两个表table1和table2,我运行一个sql查询作为
update table1 set avail = 0 where id in (select id from table2 where duration < now() - interva
我尝试从其他电子表格的onEdit事件中为我的谷歌电子表格设置新的值。我得到了异常:不允许操作。我不明白我到底做错了什么。我会很高兴你的帮助,因为我只做了JS + Google Docs脚本的第一步。
function onEdit(e) {
if (e.value == "1")
updateValue(e);
else
Browser.msgBox("Type 1 in this cell");
}
function updateValue(curRange) {
//Get needed SpreadSheet ID and
只能从PSQL语句调用ALTER TRIGGER ...,而这并不总是容易初始化的。此外,为每个触发器编写数十行代码也不太好,两者都是:
if (:act = 1) ALTER TRIGGER ... ACTIVE;
else ALTER TRIGGER ... INACTIVE;
if (:act = 1) ...
如果我可以简单地调用:(以0/1作为参数),情况会好得多。
update RDB$TRIGGERS set RDB$TRIGGER_INACTIVE=1
where RDB$TRIGGER_NAME in ('TRG_AUI_DETAILS',
我试着用MySQL写这个小触发器,
CREATE TRIGGER `leg` BEFORE INSERT ON `bckoff`
FOR EACH ROW BEGIN
INSERT INTO `bckoff` SET `step`=1;
END;
之后我得到了这个错误..我是MySQL的新手..所以请帮帮我..
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
当执行时,触发器抛出下面的错误。请帮帮忙
DELIMITER |
CREATE TRIGGER `Problem_created` AFTER UPDATE ON `WorkOrder_Fields` FOR EACH ROW
BEGIN
DECLARE problem_time_stamp int;
IF NEW.UDF_CHAR37 ='Problem' AND OLD.UDF_CHAR37='Incident'
THEN
SET problem_time_stamp = (SELECT UNIX_TIM
我正在将数据从SQLSERVER迁移到MySQL。我在为TRIGGER_NESTLEVEL()找到替代函数方面遇到了一些困难。
什么是TRIGGER_NESTLEVEL() SQLSERVER函数在MySQL中的等效值(递归结束时触发)。如果它没有递归,那么如何检测递归是否以另一种方式结束?
以下是我的疑问:
ALTER TRIGGER [dbo].[TGR_UPD_NAME]
ON [dbo].[TBL_MS_NAME] FOR UPDATE,INSERT
AS
BEGIN
IF ((SELECT TRIGGER_NESTLEVEL()) > 1 )
RETURN
我有下面的代码,用于保存到MySQL数据库。当我执行我的代码时,我会得到以下错误:
错误:“NEW”中未知列“User”
这是我的密码:
Dim DBconnSTRs As String = conn.connects
Dim DBconns As MySql.Data.MySqlClient.MySqlConnection = New MySql.Data.MySqlClient.MySqlConnection(DBconnSTRs)
DBconns.Open()
Dim sqlcmd As New MySql.Data.MySqlClient.MySqlCommand
Dim sq
在另一个表上发生insert事件后,使用触发器填充表,这样做很好。但是,我注意到触发器仍然会为现有记录插入一个新行。为了解决这个问题,我想再次创建触发器,但是这一次,只有当一个条件是met...but,以前没有使用过触发器的情况下,才会触发触发器,这会导致语法错误,并且无法识别出正在做的错误。请看一看,帮我修一下
CREATE TRIGGER `students_gen_insert`
AFTER INSERT ON `students` FOR EACH ROW
BEGIN
INSERT INTO records (student_id, subject_id)
SELECT new.st
我正在尝试设置一个MySql触发器,以便在ODBC中插入/更新数据后运行。
我的扳机在下面:
CREATE TRIGGER `myTrigger`
AFTER INSERT ON `testTable` FOR EACH ROW UPDATE `testTable` SET `Field One` = CONCAT(`Field One`, ' - Trigger');
我的触发器语句在MySql工作台中运行,但当我从Microsoft数据库连接到testTable,然后尝试插入一行时,就会得到其中一个:
为了使事情更有趣,当我尝试运行以下命令时:
INSERT IN
DB: MySQL
使用: MySQL工作台
我目前正在为班级设计一个项目,我们必须设计一个机场网站,用户可以登录/注册和购买各种航班提供的机票。在这个项目工作了一段时间之后,我意识到我的触发器不起作用了。
我收到错误:Error Code: 1442. Can't update table 'reservation' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
在创建供用户选择和购买门票的表单
我正在为我的学校图书馆做一个项目。有一个成员表,它具有注册日期、到期日期和更新日期属性。现在,当一个新成员注册时,我希望有一个触发器,它将插入注册日期、续订日期的当前日期,并且由于成员的有效期为2年,因此应将到期日期设置为自当前日期起的两年。现在我已经编写了这方面的触发器,但是当我插入一个新成员时,我会得到以下错误。
错误代码: 1442。无法更新存储函数/触发器中的表“成员”,因为它已经被调用此存储函数/触发器的语句所使用。
这是我的扳机
DELIMITER $$
create trigger regDate
before insert on member
for each ro
我在尝试运行以下命令时出现错误(1064) ...(MySql 5.5.9)
查询:
CREATE TRIGGER clearChat AFTER INSERT ON chat
FOR EACH ROW
BEGIN
DELETE p.* FROM chat p LEFT JOIN (SELECT t.id FROM chat t ORDER BY t.id DESC LIMIT 50) x ON x.id = p.id WHERE x.id IS NULL
END;
错误是:
You have an error in your SQL syntax; check the manual that
我有两张桌子t1和t2。我在t1上创建了两个触发器tr1 after insert,在t2上创建了tr2 after update。在这两个表中,我都更新了表t2。因此,它抛出一个错误,说明t2表已经在另一个触发器中更新,所以不能再次更新它。
请让我知道,如果有人遇到这种类型的问题,并解决它。
提前感谢!MySQL数据库管理员。
我使用的是mysql db & java,因此在我的应用程序中我需要使用触发器,但我需要在插入或更新时将其保存。当在表A中插入新的记录时,触发器将在另一个表B中插入一些信息。当对表A中的记录进行更新时,触发器将更新表B的记录。
如果事务在update或insrt回滚期间执行,是否会回滚触发器所做的任何更改。??!!
我创建了一个MySQL触发器,用于每次添加新记录时清除最古老的记录:
CREATE DEFINER = `root`@`localhost` TRIGGER `cleanRecords` BEFORE INSERT ON `Records`
FOR EACH
ROW BEGIN
SELECT COUNT( * )
INTO @cnt
FROM cla.Records;
IF @cnt >=1000 THEN DELETE FROM cla.Records ORDER BY createdDate DESC LIMIT 1 ;
END IF ;
END
我们的期望是从一个
考虑下表couples,其中male是主键:
male female
David Maria
John Victoria
Paul Sara
Steve Anna
现在,假设您创建了一个后插入触发器:
BEGIN
UPDATE `couples` SET `female`='Brenda'
WHERE `male`='Peter';
END
首先,您可能会认为插入一个新的男性记录Peter会使触发器自动填充女性对应的Brenda。然而,情况并非如此:
INSERT INTO `couples` (`male`) VALUES (&
我正在尝试创建一个MySQL触发器,以禁用某人的帐户,如果他们已经登录到网站3次。我尝试使用以下代码创建此触发器,但无论times_logged_in是什么,它都不会将is_active设置为0。任何帮助都将不胜感激。
CREATE TRIGGER updateTrigger AFTER UPDATE ON users
FOR EACH ROW
BEGIN
UPDATE users SET is_active=0 WHERE NEW.is_code=1
AND NEW.times_logged_in>=3
AND NEW.user_id=user_id;
END;
比起MySQL,我更习惯于MySQL,而且似乎有一些轻微的语法问题,我就是搞不清楚。我收到的错误信息对我来说似乎毫无意义,如果有人能告诉我我在这里做错了什么,我会非常感激的。是否不允许我在更新触发器中进行更新?
我的想法是,我只想跟踪我目前的德文日志是否已被修正,并根据我是否正在更新日志中的部分或我的导师正在更新它们的部分来记录时间。
我的守则是:
DELIMITER //
CREATE TRIGGER updateTimes
AFTER UPDATE ON Logs
FOR EACH ROW
BEGIN
IF (Old.TimGerman <> New.TimGer
BEGIN
SET new.Diff = DATEDIFF(new.RepairDate,new.FaultyDate);
UPDATE po
INNER JOIN xt ON po.SerialNumber = new.SerialNumber SET po.Edate = ADDDATE(po.Edate, new.Diff)
WHERE po.SerialNumber = new.SerialNumber;
END
这是我的触发器语句。我想将使用by datediff得到的整数添加到Edate中。我唯一的问题是,如果我在xt表中插入一个测试条目来测试这个触发器,那么什么也不会发生。如果
我使用的是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版本,我想知道如果有实际选中的行,此触发器是否会回滚更新。还是我必须手动做回滚?
另外,我的触发
我想要在update record之后更新一列"status“,并且仅当四个特定列不为null时才更新。这是我的触发器,但它不能正常工作。
CREATE TRIGGER `after_thesis_rate_upade`
AFTER UPDATE ON `theses`
FOR EACH ROW IF (new.promoterRate IS NOT NULL AND new.promoterNote IS NOT NULL AND new.reviewerNote IS NOT NULL AND new.reviewerRate IS NOT NULL)
THEN
UPDATE
我有一个工业系统,它将警报记录到远程托管的MySQL数据库中。每当警报的属性改变时(例如警报被激活、确认或关闭的时间),工业系统都会将新行插入到名为“警报”的表中。
我不希望每个警报有多个记录,所以我设置了两个数据库触发器。第一个触发器将每个新记录镜像到第二个表,根据需要创建/更新行。第二个表('alarm_display')将'Tag‘列设置为主键。“alarm”表没有主键。此触发器的代码为:
CREATE TRIGGER `mirror_alarms` BEFORE INSERT ON `alarms`
FOR EACH ROW
INSERT INTO