Ich erstelle eine Datenbank, in der ich Eingabedaten mit Triggern validiere. Ich habe sie erfolgreich hinzugefügt, aber es gibt einen Fehler, wenn ich versuche, feine Daten einzugeben.Fehlercode: 1109. Unbekannte Tabelle 'neu' in der Feldliste
Schaffung db, Tabellen und löst
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 ;
Wenn ich zur Eingabe von Daten versuchen durch
INSERT INTO Ludzie VALUES ('7810396705', 'Anders', 'Kennedy','1958-08-20', 1.70, 88.6, 43)
I
Error Code: 1109. Unknown table 'new' in field list
bekomme ich bereits versucht, MySQL-Server ein- und ausschalten, überprüft, ob ich es mit der richtigen Datenbank mache. Alles scheint gut zu sehen, aber es ist nicht:/
Nicht, dass es wichtig ist, aber nur für den Fall, welche Version von MySQL laufen Sie? –
5.7.20-0ubuntu0.16.04.1 – Arryyyy