Cześć,
Muszę napisać prosty trigger który będzie sprawdzał czy dana wartość już istnieje ale nie wiem czemu nie rozpoznaje mi mojej kolumny. Tak wygląda baza:
CREATE DATABASE IF NOT EXISTS zarzadzanie;
CREATE TABLE IF NOT EXISTS sklep
(
nazwa VARCHAR(255) NOT NULL,
adres VARCHAR(255),
PRIMARY KEY (nazwa)
);
INSERT INTO sklep (nazwa) VALUES ('Sklep_1');
CREATE TABLE IF NOT EXISTS towar
(
nazwa VARCHAR(255) NOT NULL,
producent VARCHAR(255),
PRIMARY KEY (nazwa)
);
INSERT INTO towar (nazwa) VALUES ('Towar_1');
DROP TABLE IF EXISTS sprzedaz;
CREATE TABLE IF NOT EXISTS sprzedaz
(
nazwasklepu VARCHAR(255) NOT NULL,
adressklepu VARCHAR(255),
nazwatowaru VARCHAR(255) NOT NULL,
producent VARCHAR(255),
AktualnaData TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
cena FLOAT,
FOREIGN KEY (nazwaSklepu) REFERENCES sklep(nazwa),
FOREIGN KEY (nazwaTowaru) REFERENCES towar(nazwa)
);
Tak wygląda trigger:
DELIMITER //
CREATE TRIGGER dodaj
BEFORE INSERT ON sprzedaz
FOR EACH ROW BEGIN
DECLARE wiadomosc VARCHAR(255);
IF NEW.nazwatowaru = nazwatowaru THEN
SET wiadomosc = 'Taki sklep juz istnieje';
END IF;
END //
DELIMITER ;
A tak wygląda wstawianie:
INSERT INTO sprzedaz (nazwasklepu, nazwatowaru)
SELECT s.nazwa, t.nazwa FROM sklep AS s, towar AS t
WHERE s.nazwa = 'Sklep_1' AND t.nazwa = 'Towar_1';
Oraz błąd:
Error Code: 1054. Unknown column 'nazwatowaru' in 'field list'