[PERFORM] Find one record

2003-09-18 Thread Joseph Bove
Dear list,

I hope this to be a simple question. I have need to simply read the first 
row in a given table. Right now,  I have some legacy code that selects all 
rows in a table just to see if the first row has a certain value.

The code is seeking to see if an update has been run or not. A hypothetical 
scenario would be: has an update been run to populate data into a new 
column in a table. Neither the data nor any of the rows are consistently 
known. So the test selects all rows, tests the first row and then ends if 
the column has a value.

Does anyone have a better way to do this?

Regards

---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster


Re: [PERFORM] Find one record

2003-09-18 Thread Josh Berkus
Joseph,

 I hope this to be a simple question. I have need to simply read the first
 row in a given table. Right now,  I have some legacy code that selects all
 rows in a table just to see if the first row has a certain value.

Your problem is conceptual: in SQL, there is no first row.   

If you want to just pick a single row at random, do
SELECT * FROM table LIMIT 1;

Or if you have a primary key id, you could for example return the row with the 
lowest id:

SELECT * FROM table ORDER BY id LIMIT 1;

 The code is seeking to see if an update has been run or not. A hypothetical
 scenario would be: has an update been run to populate data into a new
 column in a table. Neither the data nor any of the rows are consistently
 known. So the test selects all rows, tests the first row and then ends if
 the column has a value.

I'd write an ON UPDATE trigger, personally, to fire and write data somewhere 
else whenever the table is updated.  Much more reliable 

-- 
Josh Berkus
Aglio Database Solutions
San Francisco

---(end of broadcast)---
TIP 8: explain analyze is your friend