benzulli
27.08.2014, 11:36:40
Witam
Mam pewien problem z modyfikacją pewnego dodatku w wordpressie. Potrzebuję zrobić tak, że każdy rekord kolumny 'expiry' będzie zawierał w sobie '2020'. Za każdym razem kiedy się doda nowy rekord, stała wartość tej kolumny. Najłatwiej będzie jak po prostu baza danych zrobi to za mnie i nie będę musiał dodawać rekordu w formularzu.
mar1aczi
27.08.2014, 11:41:42
by_ikar
27.08.2014, 12:42:41
@mar1aczi - do tego nie może użyć triggera, dlatego że triggerem nie zmodyfikujesz tabeli na której aktualnie operujesz.
Cytat
Within a stored function or trigger, it is not permitted to modify a table that is already being used (for reading or writing) by the statement that invoked the function or trigger.
http://dev.mysql.com/doc/refman/5.0/en/sto...strictions.htmlChyba że są to operacje na dwóch różnych tabelach, ale o tym dowiemy się dopiero w momencie kiedy autor tematu napisz dokładniej o co mu chodzi.
benzulli
27.08.2014, 18:36:24


Struktura tabeli i tabela chcę, żeby w kolumnie expiry zawsze była ta sama data (dajmy na to 2015-07-26 00:00:00)[nawet jeśli dodam nowe rekordy].
ZaXaZ
27.08.2014, 19:00:32
Cytat
Struktura tabeli i tabela chcę, żeby w kolumnie expiry zawsze była ta sama data (dajmy na to 2015-07-26 00:00:00)[nawet jeśli dodam nowe rekordy].
ALTER TABLE tabela
CHANGE expiry expiry datetime DEFAULT '2015-07-26 00:00:00'
I pomijaj w insert/update kolumne expiry jak nie ma sie zmieniac.
by_ikar
27.08.2014, 19:01:53
Tak jak myślałem z tym triggerem. A co do twojego problemu, jeżeli w żaden sposób nie nadajesz tej daty z poziomu skryptu, a chyba tak nie robisz, bo widzę tam zera. To możesz ustawić wartość domyślną (default) dla tej kolumny.
mmmmmmm
27.08.2014, 19:16:10
A po co ci kolumna z wartością, skoro to jest wartość stała?
benzulli
27.08.2014, 19:25:54
To jest zbugowany plugin do wordpressa, na którym jest już cały sklepik i muszę po prostu przerobić tak, aby kolejny - zbugowany i niesupportowany plugin - wp e-commerce coupon codes - mógł działać. Jednym słowym kupony na zniżki działają tylko wtedy, kiedy jest podana data unieważnienia kuponu, a te z kolei są generowane z automatu i data jest zawsze 0000-00-00 00:00:00 (coś takiego) to muszę w bazie dać jakąś stałą wartość z przyszłą datą.
P.S.
Default nie działa.
Widzę, że chyba nie będzie innej opcji jak po prostu grzebanie w tych plikach, czasochłonne, ale w końcu pewno dotrę do tego zapytania.
by_ikar
27.08.2014, 19:38:30
Zadziała, tylko zwróć uwagę że to jest
datetime, czyli musisz podać date i czas, w twoim przypadku będzie to
Kod
2020-01-01 00:00:00
benzulli
27.08.2014, 19:45:59
by_ikar, robiłem tak jak mówisz wcześniej i niestety nie działa.
by_ikar
27.08.2014, 19:49:58
Więc ta data nieprawidłowa jest przesyłana na poziomie skryptu, cóż, nie pozostaje ci nic innego jak sprawdzić ten skrypt. Data jest niepoprawna, stąd ustawiana jest na same zera.
benzulli
27.08.2014, 20:16:10
Obszedłem trochę problem i zrobiłem w cronie (co 5 sekund) coś takiego:
$query = mysql_query("UPDATE wordpress_auto_wpsc_coupon_codes SET expiry = '2018-08-25 00:00:00'");
Moje pytanie brzmi następująco:
jak powinno brzmieć zapytanie, które zaktualizauje mi wszystkie te kolumny 'expiry', które mają wartość "0000-00-00 00:00:00" na "2018-08-25 00:00:00"?
nospor
27.08.2014, 20:17:41
...where expiry='0000-00-00 00:00:00'
benzulli
27.08.2014, 20:24:41
Dzięki mistrzu, do zamknięcia
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.