mysql 中的“代替”触发器

Lak*_*ndu 4 mysql sql triggers

我有一个客户。

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`)
)
Run Code Online (Sandbox Code Playgroud)

当一个新行添加到这个客户表时,如果cNic新行的(主键)已经在客户表中,我想用其他字段更新现有(旧)行。( Update customer set cName='NewName' where cNic = 'enteredNic').

否则(如果cNic不在表中)插入一个新行。我知道我可以使用instead of触发器在 mssql 中做到这一点。有没有办法在mysql中做到这一点。

Bil*_*win 5

MySQL 没有代替触发器,但它有REPLACEINSERT...ON DUPLICATE KEY UPDATE(参见文档)。

另请参阅我对“INSERT IGNORE”与“INSERT ... ON DUPLICATE KEY UPDATE”的回答