Nejsem moc nový v SQL, ale tady se mi nepodařilo přimět tabulku se sloupečkem typu timestamp, aby její implicitní hodnota byla současné datum. Když napíšu
create table xx (a int, b timestamp default 'now()')
tak je to ok a po insertu (a) values (1) se tam vloží dnešní datu.
Ale pokud jsem stvořil složitější tabulku, tak to prostě nefunguje a vkládá to tam std. '0000-00-00 00:00:00', což je taky pěkná blbost.
Zatím to řeším v insertu. Ale moc se mi to nelíbí.
Víte někdo jak na to?
Jen poznámka.
Pozor, pokud přes příkaz Insert - Values vkládáš aktuální čas pomocí NOW(), nesmíš tam dát apostrofy, jak to máš uvedeno v nadpisu.
Správně: INSERT INTO $tabulka
(
$adresa
)
VALUES
(
NOW(),NOW(),'$nadpis','$anotace','$text','$autorid'
) ";
Asi jsem ti tim moc nepomohl, co?
me funguje nasledujici:
CREATE TABLE xy (
a INT,
b TIMESTAMP NOT NULL DEFAULT NOW()
);
(to NOW() nedavam do apostrofu, protoze predpokladam, ze to je volani funkce now() ktera vraci aktualni datum a cas)
a pak to vkladani vypada:
INSERT INTO xy (a) VALUES (5);
takze ten sloupec "b" tam vubec neuvadim a tim ze je NOT NULL a navic DEFAULT NOW() tak se me tam uklada ten aktualni timestamp automaticky a vzdycky....
Bez uvozovek to v myAdmin nezapíšeš, to pak hlásí chybu:
error near
defaultnow()
a to fakt bez mezery. Asi to přes ten myAdmin nebude úplně ono. Ještě si s tím pohraju.
Co takhle
CREATE TABLE xx (
a INT NOT NULL,
b TIMESTAMP NULL);
A vkládat pomocí
INSERT INTO xx (a) VALUES (256741);
-> b se automaticky nastaví na aktuální datum (pozor na UPDATE, taky to mění!)
Četl jsem manuál k MySQL. Doma dělám s PostgreSQL. Tam mi příjde chování data jako logičtější. U toho MySQL mám pocit, že se to tak prostě chová z neznámého důvodu a oni to jenom zdokumentovali. (definice: timestamp null, při insertu se vloží aktuální datum, do dalšího timestamp se vloží taky aktuální datum a takové podobné matlaniny. Nu což. Ještě si ten návod dvakrát pořádně přečtu a možná dojdu na to, že trubka jsem já. :o)