webForumDet fria alternativet

Timestamp fält ändras vid varje uppdatering?

Databaser & SQL

14 svar · 215 visningar · startad av Pace

Medlem sedan juni 20019 024 inlägg
Frågan#1

You can set any TIMESTAMP column to a value different than the current date and time by setting it explicitly to the desired value. This is true even for the first TIMESTAMP column. You can use this property if, for example, you want a TIMESTAMP to be set to the current date and time when you create a row, but not to be changed whenever the row is updated later:

Men, timestamp fältet uppdateras i alla fall när jag gör följande anrop:

UPDATE PaceBoard_Topics SET t_noOfRead = t_noOfRead + 1 WHERE topic_id = " & topicID

Varför?

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan dec. 200012 464 inlägg
#2

Ett timestampfält uppdateras automatiskt om det inte explicit är med i update-satsen.

UPDATE PaceBoard_Topics SET t_noOfRead = t_noOfRead + 1,timestampColumn = timestampColumn WHERE topic_id = " & topicID

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#3

Hmmm, den lösningen ser ut att fungera utmärkt, men det gör den inte... :q

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan dec. 200012 464 inlägg
#4

Och det betyder?

(Mitt inlägg är grundat på manualen, så jag har ingen praktisk erfarenhet.)

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#5

Det betyder att det fungerar alldeles utmärkt, men att jag är så dum att jag tar fel på datumfälten (har två stycken)... :r

Nu har jag dock ett annat problem. Trots att jag satt ett fält till Timestamp(14) så vill det inte lägga till något datum, utan bara nollor, när jag använder INSERT INTO. Varför? :q

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan dec. 200012 464 inlägg
#6

Ditt datum-värde är ogiltigt.

Hur ser insert-satsen ut?

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#7

Men jag lägger ju inte in datumet, utan det får skapas automatiskt:

INSERT INTO PaceBoard_Topics (forum_id, T_Subject, T_Message, T_Originator, T_MsgIcon) Values (3, 'yeee', 's', 1, 1)

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan dec. 200012 464 inlägg
#8

Om du har flera timestampkolumner (tyckte du mumlade om det) så är det bara den första som uppdateras automatiskt.

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#9

Aha, det förklarar ju en hel del.
Men varför är det egentligen så?

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan dec. 200012 464 inlägg
#10

Jag säger bara två ord

Mysql är eget.

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#11

Jag säger bara två ord
Mysql är eget.

Jag fick det till tre ord! :p
Hehe, jo det ante mig. Har upptäckt en massa, ologiska, saker hos MySQL. Är man van att arbeta med Microsofts produkter så är logiken det första man saknar när man byter. :)

Men man kanske alltid ska ange datumet för dessa typer av fält, oberoende av databas?

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan dec. 200012 464 inlägg
#12

Tyvärr så skiljer sig hantering av datum en mellan olika databaser (och i stort sätt inga följer standard.) Så hur du än gör så får du kod som måste anpassas beroende på vilken databashanterare du använder.

Jag fick det till tre ord!

Gick du på den enkla?

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#13

Tyvärr så skiljer sig hantering av datum en mellan olika databaser (och i stort sätt inga följer standard.) Så hur du än gör så får du kod som måste anpassas beroende på vilken databashanterare du använder.

Men jag menar att det går ju att göra koden så att den passar alla dbms:er, dvs

"INSERT INTO tabell (datum, msg) VALUES('" & now & "', 'hej')"

Använder man sig av now på (alla) datumfält kommer det alltid att fungera menar jag.
[r] Om vi bortser från # och ' givetvis.

Gick du på den enkla?

Enkel? :q Jag tyckte den var jättesvår... :p

Fick använda mig av detta:

arrLarsG = Split("Mysql är eget.", " ")
Response.Write Ubound(arrLarsG) + 1

§e

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

[Redigerat av Pace den 31 okt 2001]

Medlem sedan dec. 200012 464 inlägg
#14

Nej, att skriva ett datum som

'2001-04-23'

är godkänt i ganska många dbms, men inte alla.

Enligt ANSI-standard skall det skrivas

date '2001-04-23'

och det finns även andra varianter.

red: förtydligande

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 31 okt 2001]

Medlem sedan juni 20019 024 inlägg
#15

Aha, okej!
Tackar för svaren, blev lite klokare även denna gången. :)

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)