2017-12-08 3 views
0

私はトリガーで入力データを検証するデータベースを作成しています。正常に追加しましたが、細かいデータを入力しようとするとエラーが発生します。エラーコード:1109.フィールドリストに不明なテーブル 'new'があります

デシベル、テーブルを作成し、私は

INSERT INTO Ludzie VALUES ('7810396705', 'Anders', 'Kennedy','1958-08-20', 1.70, 88.6, 43) 

によって入力されたデータにしようとすると私はすでにオンとオフのMySQLサーバを回してみました

Error Code: 1109. Unknown table 'new' in field list 

を取得

CREATE DATABASE IF NOT EXISTS DBWorkers; 

CREATE TABLE IF NOT EXISTS Ludzie(
PESEL char(11) NOT NULL, 
imie varchar(30) NOT NULL, 
nazwisko varchar(30) NOT NULL, 
data_urodzenia date NOT NULL, 
wzrost float NOT NULL, 
waga float NOT NULL, 
rozmiar_buta int NOT NULL, 

PRIMARY KEY(PESEL)); 

DELIMITER $$ 
CREATE FUNCTION check_pesel(PESEL char(11)) RETURNS bool 
BEGIN 
IF(
    CHAR_LENGTH(NEW.PESEL) <> 11 AND 
    CONVERT(PESEL, SIGNED INT) > 0 AND 
    CONVERT(LEFT(PESEL,2), SIGNED INT) BETWEEN 0 AND 99 AND 
    CONVERT(SUBSTRING(PESEL,3,2), SIGNED INT) BETWEEN 1 AND 12 AND 
    CONVERT(SUBSTRING(PESEL,3,2), SIGNED INT) BETWEEN 1 AND  DAY(LAST_DAY(CONCAT('19',LEFT(PESEL,2),'-',SUBSTRING(PESEL,3,2),'-01'))) 
    ) 
    THEN 
     RETURN TRUE; 
    ELSE 
     RETURN FALSE; 
END IF; 
END $$ 

CREATE TRIGGER `ludzie_data_check_before_insert` BEFORE INSERT ON `Ludzie` 
FOR EACH ROW 
BEGIN 
IF NOT(
     check_pesel(NEW.PESEL) AND 
     NEW.WZROST > 0.0 AND 
     NEW.WAGA > 0.0 AND 
     NEW.ROZMIAR_BUTA > 0 
    ) 
THEN 
    SIGNAL SQLSTATE '45000' 
    SET MESSAGE_TEXT = 'check on Ludzie failed during insert'; 
END IF; 
END $$ 
DELIMITER ; 

トリガし、私が正しいデータベースに行っているかどうかを確認します。すべてがうまく見えるように見えるが、そうではありません:NEW.PESELとPESELの一貫性のない使用がある

CHAR_LENGTH(NEW.PESEL) <> 11 AND 
CONVERT(PESEL, SIGNED INT) > 0 AND 

は、あなたがキーワードnewを使用すべきではありません:/

+0

必ずしも重要ではありませんが、その場合は、あなたの実行しているMySQLのバージョンは? –

+0

5.7.20-0ubuntu0.16.04.1 – Arryyyy

答えて

2

は私があなたの問題を見つけたと思いますデータベースに何も追加しない関数。この文脈では、エラーはNEWをキーワードの代わりにテーブルとして認識しました。

+0

ありがとうございました。私はどのように私はその盲目的なことができるか分からない:( – Arryyyy

1

はい、いくつかの読み取りを行った後、私は同様に「NEW」キーワードが

CHAR_LENGTH(NEW.PESEL)で必要とされないことを賭けて喜んで。

NEWキーワードは、updateコマンドとinsertコマンドで使用されます。

関連する問題