Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 需要使用phpMyAdmin来执行以下触发器中的语法错误_Mysql_Sql_Triggers - Fatal编程技术网

Mysql 需要使用phpMyAdmin来执行以下触发器中的语法错误

Mysql 需要使用phpMyAdmin来执行以下触发器中的语法错误,mysql,sql,triggers,Mysql,Sql,Triggers,这是我写的代码 delimiter // CREATE TRIGGER user_address_check BEFORE INSERT ON street_master FOR EACH ROW BEGIN DECLARE @check int; @check = STRCMP(NEW.locality_name,street_master.locality_name) if(@check!=1) then dbms_output.put_line('Record Already Exists

这是我写的代码

delimiter //
CREATE TRIGGER user_address_check BEFORE INSERT ON street_master
FOR EACH ROW
BEGIN
DECLARE @check int;
@check = STRCMP(NEW.locality_name,street_master.locality_name)
if(@check!=1)
then dbms_output.put_line('Record Already Exists');
End IF;
END;
//delimiter;
street_master是表名, 名称是一列

收到的错误是:


您的SQL查询中似乎有错误。MySQL服务器错误 下面的输出(如果有)也可以帮助您诊断故障 问题错误:未知标点字符串@235 STR://1064- 支票上的合并税错误@检查= STRCMPstreet\u master.locality\u name,NEW.name;if@check!=1'Ãla 木质素4


您得到的错误来自于在变量前面加@前缀。如果您使用mysql复合语句语法,那么就不需要在它们前面加@,所以请删除它

但是,您可以通过在Location_name字段上创建一个简单的唯一索引来实现


如果坚持使用触发器,则strcmp调用不正确,应运行select以检查该值是否存在。

您希望触发器做什么?session变量不贴花,直接使用SET赋值,您还可以告诉我们确切的错误是什么吗?错误显然属于绝密分类,否则我无法理解您为什么不与我们共享它。street\u master.Location\u name您希望表达式中的值是什么?您应该执行搜索选择以检查记录是否存在,或者对位置名称使用唯一索引。您的SQL查询中似乎有错误。下面的MySQL服务器错误输出(如果有)也可以帮助您诊断问题。错误:未知标点字符串@235 STR://1064-Erreur de syntax près de'@check@检查=STRCMPstreet\u master.locality\u name,NEW.name;if@check!=1'Ãla ligne 4请您详细说明strcmp调用…因为我想存储strcmp的输出,据我所知,可以是0、-1或1..所以我应该怎么做…对不起,但这是一个与您所问完全不同的问题。请在另一个问题中发布。虽然,我不明白为什么你想要这个复杂的代码而不是一个简单的唯一索引。。?有一个语法错误,这不仅仅是因为你前面提到的“@”……strcmp调用在语法上是错误的。。。。。请看,我不想在数据库中创建一个新条目,该条目具有与某个唯一索引中已存在的locality\u名称相同的locality\u名称……您询问了一个关于特定语法错误的特定问题。我的回答帮助解决了这个问题。现在您得到了一个不同的语法错误。即使我帮你修好了下一个,你也会得到一个新的。你的整个触发器都不正确。而且我看不到触发点。我一直告诉你,你可以用一个唯一的索引获得完全相同的结果。对于为什么选择触发器而不是唯一索引,您没有提供一个单一的原因。你知道什么是唯一索引吗?