select count(*) FROM antecedente_delito WHERE rut_polichile = NEW.rut_polichile
このステートメントは値 0 を与えていますが、それは 18 を与えるはずです:/ バグを見つけるために多くのことを試みてきました。
SqlFiddle でコードを使用/変更してモックアップした実用的なソリューションを次に示します。 http://sqlfiddle.com/#!2/ac2e9/1
これをトラブルシューティングするために、実際の値を確認し、NEW. あなたがそうすべきだと思うものを返しています。場合によっては、特殊文字のトリミングまたは削除が行われることがあります。特に、サブプロシージャーで _ および % 記号が削除される可能性があります。
私はクエリから始めます:
select top 50 rut_polichile, NEW.rut_plichile FROM antecedente_delito
varbinary チェックを追加しても問題が明らかでない場合:
select top 50 cast( rut_polichile as varbinary), cast(NEW.rut_plichile as varbinary) from antecedente_delito
テーブルに 18 レコードしかない場合は、上記のトラブルシューティングを行っても問題ありませんが、さらにデータがある場合は、WHERE ステートメントの行 ID またはその他の識別子によって上記の結果を制限することをお勧めします。
答えではありませんが、答えを見つけるのに役立つことを願っています。
テーブル列への参照がトリガー定義のOLD.col_nameまたはNEW.col_nameを介して発生する場合の、サブジェクト表のSELECT特権。
しかし、トリガーにトリガー定義が表示されません。だからNEWなしで試してみてください。
詳細については、http://www.sqlinfo.net/mysqldocs/v51/triggers.htmlまたは http://bugs.mysql.com/bug.php?id=31068を参照してください。