Jeśli chodzi o procedure, to napisałbym to mniej więcej tak:
create procedure zwrot_ksiazki(in param int,data_odd date)
UPDATE tbl_name SET column_table = data_odd
WHERE column_table = param;
call zwrot_ksiazki(3, "2017-06-01");
in id int, data_odd data
U siebie w kodzie napisałeś "data", a to oznacza "dane", bo datę się tak pisze: "date". Tak, więc to jest raczej błąd.
Następnie w tym wypadku begin i end są zbędne, ponieważ stosujemy tylko 1. średnik na końcu, gdyby średników byle kilka to użylibyśmy wtedy składni: begin ... end, aby móc połączyć kilka instrukcji w całość dzięki zmianie delimiter'a (separatora).
Musisz jeszcze trigger'a poprawić, aby nie zmieniał wartości wszystkich rekordów tylko wybranego ID. Zamień, więc to:
SET punkty = punkty-10;
na coś takiego z klauzulą where:
SET punkty = punkty-10 where /*id*/ = NEW./* i tutaj musisz wstawic tę wartośc, którą podasz w procedure*/;
Zapomniałem jeszcze dodać, że aby ci działały te instrukcje (trigger, procedure, czy inne) to musisz mieć odpowiednie uprawnienia do tego w bazie danych. Na użytkowniku root ma się chyba wszystkie uprawnienia, ale musisz je mieć też wszystkie (do testowania) ustawione na odpowiedniej bazie i tabeli. Tylko na czas testów weź przenieś te skrypty do bazy o najwyższych uprawnieniach bo być może w tym tkwi problem.
https://dev.mysql.com/doc/refman/5.7/en/show-grants.html
delimiter //
create trigger name_trigger
after update on tbl_1 for each row
begin
if(select datediff(date1,date2) from tbl_1 /*where id=1*/)>50
then
update tbl_2 set tbl_column = 'white';
else
update tbl_2 set tbl_column = 'grey';
end if;
end;
//
W tym kodzie powyższym usuń to: /*where id=1*/, bo zapewne nie chcesz tylko zmieniać rekordu z ID=1.
+-------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| ile | int(11) | YES | | NULL | |
| date1 | date | YES | | NULL | |
| date2 | date | YES | | NULL | |
+-------+---------+------+-----+---------+----------------+
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| kto | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+