我有一个顾客。
CREATE TABLE `customer` (
`cNic` VARCHAR(50) NOT NULL DEFAULT '',
`cName` VARCHAR(100) NULL DEFAULT NULL,
`cAddress` VARCHAR(500) NULL DEFAULT NULL,
`cTp` VARCHAR(50) NULL DEFAULT NULL,
`cEmail` VARCHAR(50) NULL DEFAULT NULL,
`creditLimit` DOUBLE NULL DEFAULT NULL,
`CustomerStatus` INT(11) NULL DEFAULT '0',
PRIMARY KEY (`cNic`)
)
当将新行添加到此客户表时,如果cNic
新行的(主键)已经在客户表中,则我想使用其他字段对现有(旧)行进行更新。(Update customer set cName='NewName' where cNic = 'enteredNic'
)。
否则(如果cNic
不在表中)插入新行。我知道我可以使用instead of
触发器在mssql中做到这一点。有没有一种方法可以在mysql中做到这一点。
MySQL没有触发器,但是它具有REPLACE和INSERT
… ON DUPLICATE KEY UPDATE
(请参阅文档)。
我试图在插入后创建一个触发器,它将更新另一个表。 这是我尝试的代码: 但我会收到以下错误消息: 1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,了解使用“@qte AS integer”附近的正确语法;声明@code为整数;从INSERTED中选择@QTE=qteInv;%s“位于第4行
我在MariaDb服务器中有一个触发器,其代码如下: 我正在尝试在我拥有MySQL(5.7+版本)的生产服务器上创建相同的触发器。我会得到这样的错误: 误差静态分析: 分析中发现错误6处。 语句开头意外。(在位置0的“创建触发器”附近) 语句开头意外。(靠近位置15处的“”) 语句开头意外。(靠近位置39处的“插入之前”) 语句开头意外。(第57位“”附近) 语句开头意外。(靠近位置74处的“FO
问题内容: 如果我 在表上有,如何抛出错误以阻止对该表进行更新? 问题答案: 这是一种可行的技巧。这不是干净的,但看起来可能可行: 本质上,您只是尝试更新不存在的列。
问题内容: 据我了解,当您调用last_insert_id()时,它是通过连接进行的,因此您将获得插入到调用last_insert_id()的同一连接中的最后一行的ID,对吗? 那么,如果我在“ AFTER INSERT”触发器中调用last_insert_id()怎么办? 我想做的基本上是这样 “ anothertable”中的id与“ sometable”中的id非常重要,这是否可行?还是应该
问题内容: 我必须在MySQL中编写这样的查询: 但是MySQL不支持关键字 EXCEPT 。是否有 标准模式 可以正确使用另一个模拟MySQL中的除外的运算符? 问题答案: 您可以使用NOT IN
我知道这是非常不受赞扬的, 我知道这是一个性能、速度等方面的问题,但这是一个集成问题,他们只通过mysql进行更新(我知道这样做也很疯狂,但我无法改变他们所做的,他们正在进行大量的销售,所以他们不想改变任何事情)。 我只需要发布到一个URL(它可以像http://www.google.com?id=skuid) 我读了这个博客和堆栈,但他们是2岁,想知道是否有替代使用udf: http://ope