草庐IT

auto-update

全部标签

MySQL AUTO_INCREMENT 不回滚

我正在使用MySQL的AUTO_INCREMENT字段和InnoDB来支持事务。我注意到当我回滚事务时,AUTO_INCREMENT字段没有回滚?我发现它是这样设计的,但是有什么解决方法吗? 最佳答案 它不能那样工作。考虑:程序一,您打开一个事务并插入一个具有autoinc主键的表FOO(我们随意地说它的键值为557)。程序二启动,它打开一个事务并插入表FOO得到558。将两个插入编程到表BAR中,该表有一列是FOO的外键。所以现在558位于FOO和BAR中。程序二现在提交。程序三启动并从表FOO生成报告。打印558记录。之后,程序

mysql - 如何将 AUTO_INCREMENT 添加到现有列?

如何将auto_increment添加到MySQL表的现有列? 最佳答案 我认为您想MODIFY列,如ALTERTABLEcommand所述.可能是这样的:ALTERTABLEusersMODIFYidINTEGERNOTNULLAUTO_INCREMENT;在上面运行之前确保id列有一个主索引。 关于mysql-如何将AUTO_INCREMENT添加到现有列?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

mysql - MySQL 中的 `REPLACE` 和 `INSERT ... ON DUPLICATE KEY UPDATE` 之间有什么实际区别?

我需要的是使用特定键设置记录的所有字段的值(键实际上是复合键),如果还没有具有这样键的记录,则插入记录。REPLACE似乎是为了完成这项工作,但同时它的手册页建议INSERT...ONDUPLICATEKEYUPDATE.我应该更好地选择它们中的哪一个?为什么?我想到的REPLACE的唯一“副作用”是它会增加自动增量值(幸运的是我不使用任何值)而INSERT...ONDUPLICATEKEYUPDATE可能不会。还有哪些实际差异需要考虑?在哪些特定情况下,REPLACE可以优于INSERT...ONDUPLICATEKEYUPDATE,反之亦然? 最佳答案

mysql - INSERT INTO .. ON DUPLICATE KEY UPDATE 为多个项目

我想做这样的事情INSERTINTOt(t.a,t.b,t.c)VALUES('key1','key2','value')ONDUPLICATEKEYUPDATEt.c='value';INSERTINTOt(t.a,t.b,t.c)VALUES('key1','key3','value2')ONDUPLICATEKEYUPDATEt.c='value2';t.a和t.b是键。这一切都很好,但我在第二次插入时出错。使用phpMyAdmin,这样的查询可以正常工作,但我猜它正在独立运行查询,因为它将查询的结果作为注释打印出来?这样的东西也很好,但我需要为每个项目设置不同的值。我更喜欢这个

mysql - 何时使用 SELECT ... FOR UPDATE?

请帮助我理解SELECT...FORUPDATE背后的用例。问题1:以下是什么时候应该使用SELECT...FORUPDATE的一个很好的例子吗?给定:房间[id]标签[id,name]room_tags[room_id,tag_id]room_id和tag_id是外键应用程序想要列出所有房间及其标签,但需要区分没有标签的房间和已删除的房间。如果不使用SELECT...FORUPDATE,可能发生的情况是:最初:房间包含[id=1]标签包含[id=1,name='cats']room_tags包含[room_id=1,tag_id=1]线程1:SELECTidFROMrooms;返回[

SQL UPDATE 带有附加字符串 CONCAT 的字段中的所有值不起作用

这是我想做的:当前表:+----+-------------+|id|data|+----+-------------+|1|max||2|linda||3|sam||4|henry|+----+-------------+神秘查询(类似于"UPDATEtableSETdata=CONCAT(data,'a')")结果表:+----+-------------+|id|data|+----+-------------+|1|maxa||2|lindaa||3|sama||4|henrya|+----+-------------+就是这样!我只需要在一个查询中完成它,但似乎找不到方法。我

mysql - 外键约束 : When to use ON UPDATE and ON DELETE

我正在使用MySQLWorkbench设计我的数据库架构,这非常酷,因为您可以绘制图表并转换它们:P无论如何,我决定使用InnoDB,因为它支持外键。我注意到的一件事是它允许您为外键设置更新和删除选项。有人能解释一下在一个简单的例子中可以在哪里使用“限制”、“级联”和设置空值吗?例如,假设我有一个user包含userID的表.并说我有一个消息表message这是一个多对多,有2个外键(在userID表中引用相同的主键user)。在这种情况下,设置OnUpdate和OnDelete选项有用吗?如果是,我该选择哪一个?如果这不是一个很好的例子,你能否提出一个很好的例子来说明这些是如何有用的

sql - 将 MySQL 列更改为 AUTO_INCREMENT

我正在尝试修改表以使其主键列AUTO_INCREMENT事后发生。我尝试了以下SQL,但收到了语法错误通知。ALTERTABLEdocumentALTERCOLUMNdocument_idAUTO_INCREMENT是我做错了什么还是不可能?+--------------------+|VERSION()|+--------------------+|5.0.75-0ubuntu10.2|+--------------------+ 最佳答案 ALTERTABLEdocumentMODIFYCOLUMNdocument_idINTa

sql - MySQL ON DUPLICATE KEY UPDATE 在单个查询中插入多行

我有一个SQL查询,我想在单个查询中插入多行。所以我使用了类似的东西:$sql="INSERTINTObeautiful(name,age)VALUES('Helen',24),('Katrina',21),('Samia',22),('HuiLing',25),('Yumie',29)";mysql_query($sql,$conn);问题是当我执行这个查询时,我想检查一个UNIQUE键(不是PRIMARYKEY),例如上面的'name'应该被检查,如果这样的'name'已经存在,则应该更新相应的整行,否则插入。例如,在下面的示例中,如果'Katrina'已经存在于数据库中,则无论字

MySQL - 基于 SELECT Query 的 UPDATE 查询

我需要根据日期时间检查(从同一张表中)两个事件之间是否存在关联。一组数据将包含某些事件的结束日期时间,另一组数据将包含其他事件的开始日期时间。如果第一个事件在第二个事件之前完成,那么我想将它们链接起来。到目前为止我所拥有的是:SELECTnameasname_A,date-timeasend_DTS,idasid_AFROMtableAWHEREcriteria=1SELECTnameasname_B,date-timeasstart_DTS,idasid_BFROMtableAWHEREcriteria=2然后我加入他们:SELECTname_A,name_B,id_A,id_B,i