草庐IT

mysql - MySQL 上的 join insert/update 是原子操作吗?

在一个Mysql数据库中,每个表都基于启用了自动提交的InnoDB,带有子查询和/或连接的查询是否是原子的?例子:INSERTINTOusersSELECT(x,y,z)FROMusers,commentsWHEREusers.id=comments.user_id;(加入)更新用户,评论SETusers.x=x1WHEREusers.age>30;(加入)UPDATEusers,commentsSETusers.x=x1,comments.y=y1WHEREusers.age>30;(加入)UPDATEusers,commentsSETusers.x=x1,comments.y=y1

mysql - 错误 : Error 1067: Invalid default value for ON UPDATE CURRENT_TIMESTAMP

我从Workbench运行脚本。这是完整的脚本:SET@OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS,UNIQUE_CHECKS=0;SET@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,FOREIGN_KEY_CHECKS=0;SET@OLD_SQL_MODE=@@SQL_MODE,SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';--架构mydbDROPSCHEMAIFEXISTS`mydb`;CREATESCHEMAIFNOTEXISTS`mydb`DEFAULTCHARACTER

mysql - 在 MySQL 中使用 SELECT ... FOR UPDATE 死锁

假设我有一张table:CREATETABLEt(idINTEGERAUTOINCREMENTNOTNULL,descTEXTNOTNULL)我用1个元素填充表格:INSERTINTOTABLEtVALUES(1,'Hello')我在MySQL中运行两个事务。在t1我运行:STARTTRANSACTION;SELECT*FROMtWHEREid=1FORUPDATE;在t2我运行:STARTTRANSACTION;SELECT*FROMtWHEREid=1FORUPDATE;此时我希望t1在该行上持有一个e(X)独占锁,而t2等待它获得X锁(并且t2确实被阻止了,到目前为止一切顺利)。

php - 如何在 MYSQL UPDATE 中使用表别名

我必须使用PHP的mysql_query()函数更新mysql表。因此,我只需要在一条语句中发送以下UPDATE查询:SET@i=0;UPDATEmytableSETid=(@i:=@i+1);我已经阅读了一些示例,其中可以使用使用表别名的SELECT语句来完成此操作,例如:SELECT@rn:=@rn+1ASrank,t1.*FROM(SELECT*FROMmytable)t1,(SELECT@rn:=0)t2有什么方法可以将这些表别名与我需要使用的UPDATE语句一起使用吗?编辑:根据TopherHunt的回答,我想我可以使用以下方法创建mytable的副本:创建表mytable_

Mysql Bulk update performance improvements for (when.. case)

我有一个这样的查询,它应该在每个MySQL操作之后执行。由于数据增加,此查询现在正在减慢页面加载速度,我做了正确索引等所有操作,但查询仍然相对较慢。还有其他方法可以执行这些检查吗?$query="UPDATE{$tprefix}wh_profgSETstatus=CASEWHENbatchnoin(selectbatchnofrom{$tprefix}wh_profulldetailwhereremainingdays0andremainingdays>0)THEN'quarantine'WHENQC='approved'andQA='approved'andstatus!='empt

mysql - 在 Magento 库存数量更新期间使用 "FOR UPDATE"

问题的高级摘要:在下订单时获取有关锁定库存表的问题,导致订单因超时而失败。通过结帐流程,我看到正在执行以下查询:(我添加的评论)--LockstockandproducttablesSELECT`si`.*,`p`.`type_id`FROM`cataloginventory_stock_item`AS`si`INNERJOIN`catalog_product_entity`AS`p`ONp.entity_id=si.product_idWHERE(stock_id=1)AND(product_idIN(28775,28777))FORUPDATE--Performtheactuals

mysql - 在 INSERT INTO ... ON DUPLICATE KEY UPDATE 之前检查值是否存在

背景我有一个应用程序,用户可以在其中提交产品评论。用户还可以编辑之前提交的评论或为同一产品提交另一篇评论。我正在实现“自动保存”功能,每X秒保存一次表单数据。如果页面不小心关闭了,用户可以恢复这个“草稿”。这是我的表格的简化版本:CREATETABLE`review_autosave_data`(`id`int(11)unsignedNOTNULLAUTO_INCREMENT,`review_id`int(11)unsignedDEFAULTNULL,`product_id`int(11)unsignedNOTNULL,`user_id`int(11)unsignedNOTNULL,`

MySQL:错误 150 使用 ON UPDATE SET NULL 和 ON DELETE SET NULL,为什么?

我有这个:DROPTABLEIFEXISTS`sf_guard_user`;CREATETABLE`sf_guard_user`(`id`INTEGER(11)NOTNULLAUTO_INCREMENT,`username`VARCHAR(128)NOTNULL,PRIMARYKEY(`id`),UNIQUEKEY`sf_guard_user_U_1`(`username`))Type=InnoDB;DROPTABLEIFEXISTS`shop_orders`;CREATETABLE`shop_orders`(`orders_id`INTEGER(11)NOTNULLAUTO_INCR

mysql - 使用 ORDER BY、LIMIT 和多个表的 UPDATE 语法

学习SQL,抱歉,如果这是最基本的。尝试为以下伪代码找出有效的UPDATE解决方案:UPDATEtableASETtableA.col1='$var'WHEREtableA.user_id=tableB.idANDtableB.username='$varName'ORDERBYtableA.datetimeDESCLIMIT1以上更像是SELECT语法,但我基本上是尝试更新表A的最新行中的单个列值,其中用户名在表B.username中找到(由$varName表示)链接到它在tableB.id中的ID号,它作为id存在于tableA.user_id中。希望这是有道理的。我猜测某种JOI

mysql - 错误 1452 : Cannot add or update a child row: a foreign key constraint fails

我通过MySQLWorkbench5.2.47在MySQL5.6.11中创建了两个表,如下所示。国家表:delimiter$$CREATETABLE`country`(`id`int(11)NOTNULLAUTO_INCREMENT,`country_name`varchar(45)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8$$状态表:delimiter$$CREATETABLE`state_table`(`id`int(11)NOTNULLAUTO_INCREMENT,`s