【MYSQL,触发器,实现多个表共用ID不重复】教程文章相关的互联网学习教程文章

Mysql查看存储过程、函数、视图、触发器、表

mysql查看所有存储过程,函数,视图,触发器,表查询数据库中的存储过程和函数 方法一:select `name` from mysql.proc where db = your_db_name and `type` = PROCEDURE //存储过程select `name` from mysql.proc where db = your_db_name and `type` = FUNCTION //函数 方法二:show procedure status; //存储过程show function status; //函数 查看存储过程或函数的创建代码 show create procedure proc_name;show creat...

mysql – 基于查询原子的触发器?【代码】

我有一个具有序列号的表.此序列号将更改,并且引用自动编号将不起作用.我担心触发器的值会发生碰撞.如果两个事务同时读取. 我已经在3个连接上运行了模拟测试,每个记录约100万条,没有碰撞.CREATE TABLE `aut` (`au_id` int(10) NOT NULL AUTO_INCREMENT,`au_control` int(10) DEFAULT NULL,`au_name` varchar(50) DEFAULT NULL,`did` int(10) DEFAULT NULL,PRIMARY KEY (`au_id`),KEY `Did` (`did`) ) ENGINE=InnoDB AUTO_INCREMENT=...

在更新时创建触发器以将旧值插入到MYSQL中的其他表中【代码】

我有两张桌子.第一个是我的person表,它有id,name,creation_date作为值,我有一个old_person表(id,name,modified_date),我想在实际更改之前填充person的值.我该怎么办呢?我尝试过触发但失败了. 我尝试如下create trigger Person_Trigger Update on person before update as insert into old_person(id, name, modified) select id, new.name, getdate() from person它给了我语法错误…也没有很多触发器引用,一点推动将非常感激!解...

如何在MySQL触发器中访问“INSERTED”值?【代码】

如何在触发器中访问INSERTED表的值? 例如:INSERT INTO sales (sku, qty) VALUES (1001, 5), //I need these values in the trigger (1002, 1) ...这是我的触发器:DELIMITER $$CREATE TRIGGER after_sales_insert AFTER INSERT ON sales FOR EACH ROW BEGINUPDATE productsSET NEW.qty = OLD.qty - INSERTED.qtyWHERE sku = INSERTED.sku;END; $$ DELIMITER;请注意,sales.sku是products表的外键. SQL Server具有INSERTED关键字...

mysql – 用于授予/撤销特权的SQL触发器【代码】

是否有可能创建将在mysql 5.1中授予或撤消用户权限的触发器? 我试过这个:delimiter //create trigger sup_tog before update on members for each row begin if old.fname = "xyz" and new.status = "b" then revoke select, update on mkdb.* from xyz; end if;end//我得到的错误消息是:Error Code: 1422. Explicit or implicitcommit is not allowed in storedfunction or trigger.解决方法:您可以直接操作mysql数据库中的权限...

MySQL:在自己的触发器中更新表【代码】

显然,MySQL有一个非常烦人的限制,就是无法更新为同一个表定义的触发器中的表.我正在使用MySQL版本5.1,我得到错误:“无法更新存储函数/触发器中的表,因为它已被调用此函数/触发器的语句使用”. 我有的是这个:create table folder(id int unsigned not null auto_increment PRIMARY KEY ,name varchar(100) not null ,parentId int unsigned not null ) ;这是一个分层的文件夹结构.文件夹具有名称,可能还有父文件夹(如果没有,则par...

mysql – 如何使用before insert触发器分配外键值【代码】

我有这样的场景: table1和table2有两个表. table1有一个主键pkey,如果提供了外键,table2现在在插入过程中有一个外键fkey,应按原样插入值.否则,它必须使用某些计算从table1获取主键并确定要插入的外键.我该怎么做呢?? 我正在使用MySql 5.0 编辑 在我的场景中,table1保存了账单明细,也就是说,table1有账单和要支付的总金额.客户支付一定数额的未结余额或将支付特定账单.我想做的是.当我没有提供bill_id(这是table1中的主键和table...

mysql – 无法更新在AFTER INSERT中执行触发器的表【代码】

我正在运行MySQL 5.5.9和InnoDB. 我尝试创建一个版本化的表,其中当前字段指示记录是否是最新版本.就像是:| autonumber | id | name | current | 1 | 1 | Yes | 0 | 2 | 1 | No | 1无论如何,我过去经常在MSSQL中通过一个AFTER INSERT触发器执行此操作,该触发器将具有相同id的所有记录更新为current = 0.所以这里我们进入MySQL:DELIMITER |CREATE TRIGGER TRIGGER_Products_UpdateEarlierVersions AFTER IN...

如何在过程或触发器中创建mysql事件?【代码】

最近我一直在寻找以下情况的解决方案: 我有结构的mysql表:CREATE TABLE IF NOT EXISTS `battles` ( `id` int(11) NOT NULL AUTO_INCREMENT, `active` tinyint(1) NOT NULL, `created` datetime NOT NULL, `modified` datetime NOT NULL, `begindate` datetime NOT NULL, `enddate` datetime NOT NULL, PRIMARY KEY (`id`), ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;每场战斗都有乞求和...

mysql触发器功能【代码】

我有一个表调用lp_upload,它包含汽车的车牌号和其他相关信息:CREATE TABLE `lp_upload` ( `date` date NULL , `plate` char(10) NULL , `site` int NULL , `dateid` char(20) NULL ) ;此表从交通摄像头获取信息.然而,有时候盘子中的字母不被识别,它将被$替换.因此,如果一个盘子真的是abc123,但是相机没有识别出c和1,那么它将进入表格中. 我想这样做的时候,当一个新的盘子进入并且它的6个字母与现有的盘子匹配时,它将成为那个...

mysql – 创建触发器时出现语法错误【代码】

我正在尝试在MySQL中创建一个新的触发器,但无论我尝试什么,我都会遇到语法错误.我想在html_id列中插入一个值,该列是字母f和列id的串联:CREATE TRIGGER htmlid BEFORE INSERT ON makelist_food FOR EACH ROW BEGINIF (NEW.html_id IS NULL) THENNEW.html_id = CONCAT('f', NEW.id);END IF; END我也试过这个:CREATE TRIGGER htmlid BEFORE INSERT ON makelist_food FOR EACH ROW BEGINIF (NEW.html_id IS NULL) THENINSERT INTO ...

在MySQL中,执行触发器需要什么特权?

我在MySQL手册中发现DEFINER的解释令人困惑,所以我不确定应用程序运行的’执行用户’需要什么特权.为了安全起见,我喜欢将“执行用户”限制为所需的最少权限. 我知道触发器/存储过程的创建者需要SUPER权限,但“执行用户”是否还需要SUPER权限? 我在用户下创建了一个触发器,最终失去了对我的数据库的权限. ‘执行用户’没有SUPER权限和触发失败的MySQL UPDATE. 我给’执行用户’提供了SUPER权限,我通过删除和创建触发器将DEFINER更改...

从MySQL触发器中获取准备好的查询结果?【代码】

你好,我是MySQL触发器的新手.我想从准备好的查询中获取结果,但无法看到如何使以下代码工作:BEGINDECLARE un_quer varchar(255);DECLARE res integer;IF(NEW.contact_id IS NULL) THENIF(NEW.name IS NULL OR NEW.email IS NULL) THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Forbidden: ... information not sufficient.';END IF;END IF;IF(NEW.name IS NULL OR NEW.email IS NULL) THENIF(NEW.contact_id IS NULL) THENSIGN...

mysql – 是触发器事务吗?【代码】

我有一些触发器BEFORE INSERT,AFTER DELETE在表上.如何确定触发器是否失败,然后我的查询会回滚? 我的意思是我想确定,查询和触发器都可以工作,或者它们都不起作用.触发器交易是什么?解决方法:我可以通过存储过程显示这个.这个概念从这个answer从wchiquito中解除了.我相信你会发现这是一个更详尽的答案.这只是一个例子.根据您的特定需求(其他触发器类型)进行必要的更改等.如何在不使用存储过程之外执行mysql触发器信号是任何人的猜...

mysql – 如何在一个sql触发器中使用多个事件?【代码】

这是我目前的代码:DROP TRIGGER `backup`;DELIMITER $$ CREATE TRIGGER `backup` AFTER INSERT UPDATE DELETEON `warehouse`FOR EACH ROW BEGINEND$$ DELIMITER ;这是我不断得到的错误:我检查了我的MariaDB版本.这是10.1.21 如果我只使用一个事件,它会工作,但有两个或三个事件会抛出此错误. Insert Update trigger how to determine if insert or update解决方法:在MySQL或MariaDB中,必须为一个事件定义每个触发器.您无法定义适用...