如何解决这个问题(mysql表):我需要使用哪些MySQL代码或(when I delete adminid = 1 from table A, the value of adminid table B should change to 0)?有可能吗?
表A有:
adminid = 1
adminname = jack
表B有:
newsid = 1
adminid = 1
如果删除TableB.adminid,则0应改为TableA.adminid = 1。
谢谢!
在我的模式中,我有两个列,我对MySQL如何在mysql中使用计算列连接列很陌生。
ordertbl schema
Autoorderid int auto-increment
Orderid varchar(45)
当新行插入时,我希望为orderid值插入值。
我已经为它创建了触发器,但是当我插入行时,这个触发器不会触发。
insert into order_master(customerID,ItemID,quantity,Unitprice,Total) values ('07961A','1000',6,5,30)
use nt
这个问题以前已经被问过很多种不同的风格,但是在这些情况下提供的答案并不能帮助我解决我的问题。
我们运行的是MySQL版本"5.0.41- Community -log MySQL社区版(GPL)“有问题的表是这样描述的(出于业务原因,我删除了大部分表定义):
Field Type Null Key Default Extra
--------- ------------ ------- ------ ---------- --------------
id bigint(20)
我在MySQL中创建了一个触发器,让我知道世界卫生组织(哪个mysql用户)正在对特定表进行更新。
我知道MySQL有一个CURRENT_USER()函数,但它是在创建触发器时插入用户名,还是在调用触发器时插入用户名?
到目前为止,这是我的触发器。我想在“内容”栏中插入用户名。
delimiter |
CREATE TRIGGER update_product_procedure
BEFORE UPDATE ON product_procedure
FOR EACH ROW BEGIN
INSERT INTO trigger_logs SET
content = 'This i
MySQL目前不支持更新触发器所分配到的同一个表中的行,因为调用可能会变得递归。有没有人有好的变通办法/替代方案的建议?现在我的计划是调用一个存储过程来执行我在触发器中真正想要的逻辑,但我很想知道其他人是如何绕过这个限制的。
编辑:根据要求提供更多背景信息。我有一个存储产品属性分配的表。当插入新的父产品记录时,我希望触发器为每个子记录在同一个表中执行相应的插入。这种反规范化对于性能来说是必要的。MySQL不支持这一点,并抛出:
Can't update table 'mytable' in stored function/trigger because it is al
在MySQL中
有没有办法限制任何字段不为0,如果我得到0值,将其转换为空。
例如,两个产品不能有相同的序列号,但产品可以完全没有序列号。
我现在正在使用这个:(对于几个字段)
CREATE TABLE products (
sn DECIMAL(8,2),
UNIQE (sn),
...........
) ENGINE=InnoDB;
CREATE TRIGGER prod_zero1 BEFORE UPDATE ON products FOR EACH ROW
SET NEW.sn=NULLIF(NEW.sn,0);
有没有更短\更快的方法呢?
另一个问题
我在MySQL中的触发器有问题。我有一个名为"last_modified“的列,我希望在表被编辑时,它会自动更新为当前的日期和时间。使用触发器,这是我的SQL查询:
delimiter //
CREATE TRIGGER trg_update_responders BEFORE UPDATE ON survey_responders
FOR EACH ROW
BEGIN
UPDATE survey_responders
SET NEW.last_modified = CURRENT_DATETIME();
END;//
但是,当我更新表时,例如使用下面的查询:
UPDATE surve
我想在MySQL5上更新一个表值,但是如果键不存在,就创建它。
我发现这样做的方法是:
INSERT yyy ON DUPLICATE KEY UPDATE field;
问题是:上面的格式是否比其他方式效率低(因为插入只会发生一次,而更新会非常频繁)?
例如:
$result = UPDATE field;
if (num_rows_effected($result)==0) INSERT yyy
此外:在Mysql中有没有更好的方法来做到这一点:例如:
UPDATE value IF NO SUCH ROW INSERT yyy;
更新:对于那些建议替换的人,这里是我的问题的扩展:“谢谢