0

私はアプリケーションを介してアクセスしているデータベースを持っています。アプリケーションは空白を含むすべての種類の値を取ります(私の間違い:(私のアプリケーションでのみこれを制限する必要がありました)。エントリをブロックするようにスクリプトを実行したいnull 値をデータベースに。

例: Books は、列 author 、 price 、 title を持つ私のデータベースです null author name entry をブロックしたい場合、以下に示すようにトリガーを使用しました。

区切り文字 |

CREATE TRIGGER trigger1  AFTER INSERT ON books
  FOR EACH ROW BEGIN
    IF NEW.author = '' THEN    
    delete from books where author = '';
    END IF;      
  END;
|books
DELIMITER ;

このスクリプトは、null 値をブロックするという目的を満たしていますが、いくつかの矛盾があります (ある時点以降、データベースにまったくアクセスできなくなり、値を入力したりアクセスしたりできなくなります)。誰でも何が問題なのか教えてもらえますか。

4

1 に答える 1

0

これを実現する方法は複数あります
。1) トリガーを BEFORE INSERT に変更し、作成者名が null の場合は false を返します。これにより、アプリケーションが空白の作成者名を挿入するのを停止します。

2) テーブル スキーマを変更し、作成者名に null 以外の制約を追加します。

データベースへの null 値エントリのブロックを参照してください

于 2013-04-15T05:33:24.977 に答える