Hi Keith,
Depending on your definition of 'efficient' then this might do what you
want. (untested - might need to add or remove bracket since sqlite does
seem fussy about having what it considers to be extra ones)
INSERT OR REPLACE INTO "file_downloads" SELECT
COALESCE( (SELECT record_id from "file_downloads" where where
filename = "$dl_file"),(SELECT MAX( record_id) FROM
"file_downloads")+1),
$dl_file,
COALESE( (select "dl_count" from "file_downloads" where where
filename = "$dl_file"),0)+1;
In summary - we get the record ID for the file in question - if it does
not exist then we get the max of the current ones and add 1
Then we get either the current download count for the file - or a zero
and add 1 to it.
So the whole thing is atomic and you run it once for each download that
happens so can run it across multiple instances / threads etc.
Cheers
Owen
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Keith Roberts
Sent: Friday, September 17, 2010 12:41 PM
To: [email protected]
Subject: [sqlite] UNIQUE PRIMARY KEY on TEXT column?
Hi all.
I have the following table to keep a count of the number of
times files are downloaded from my website:
CREATE TABLE "file_downloads"
(
"record_id" INTEGER PRIMARY KEY,
"filename" char(60),
"dl_count" INTEGER
/* PRIMARY KEY ("record_id") */
);
The select statement to get the current download count for a
file is:
SELECT *
from file_downloads
where filename = "$dl_file";
And the update statement to update the dl_count column is:
UPDATE file_downloads set
dl_count = "$new_count"
where filename = "$dl_file";
Would this be an efficient way of doing things?
I don't expect to be keeping track of more than 200 files
for downloading.
I was wondering if it is possible to setup the filename
column as a UNIQUE PRIMARY KEY on a TEXT column. Is that
possible? I don't need FTS capabilities, just want to make
the filename column a UNIQUE column, so there is only one
row with that particular filename.
Kind Regards,
Keith Roberts
-----------------------------------------------------------------
Websites:
http://www.karsites.net
http://www.php-debuggers.net
http://www.raised-from-the-dead.org.uk
All email addresses are challenge-response protected with
TMDA [http://tmda.net]
-----------------------------------------------------------------
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users