Re: [GENERAL] Single Row Table?

2004-08-31 Thread Jeff Eckermann

--- Scott Marlowe [EMAIL PROTECTED] wrote:

 On Sun, 2004-08-29 at 15:30, Bruno Wolff III wrote:
  On Fri, Aug 27, 2004 at 13:32:07 +0530,
Yateen Joshi [EMAIL PROTECTED] wrote:
   Hi,

   I have got a table which is supposed to contain
 only one row. It does
   not have any primary keys defined.
   So, essentially, when a new insert happens in
 that table, I would like
   it (the insert) to fail if there is already a
 row existing in that
   table.
   How can I do that? Can I add any constraints? Or
 do I need to write a
   separate trigger for the same?
  
  A simple way to force this is to add a primary key
 and a constraint
  that forces the primary key to be a particular
 value.
 
 Is it reasonable / possible to add a check
 constraint something like
 select count(*) from table =1?

ISTM most natural to do this with a rule, e.g.:

CREATE RULE my_insert_rule AS ON INSERT TO my_table DO
INSTEAD NOTHING;

Which will cause all inserts to be silently dropped. 
If you want to return a message to the application,
you could use a statement trigger, which I believe we
don't have yet, or you could use a rule like:

CREATE RULE my_insert_rule AS ON INSERT TO my_table DO
INSTEAD SELECT 'Inserts to my_table not allowed!';

Although the application may not be expecting a return
message, and might not handle it.


 
 
 ---(end of
 broadcast)---
 TIP 9: the planner will ignore your desire to choose
 an index scan if your
   joining column's datatypes do not match
 




___
Do you Yahoo!?
Win 1 of 4,000 free domain names from Yahoo! Enter now.
http://promotions.yahoo.com/goldrush

---(end of broadcast)---
TIP 7: don't forget to increase your free space map settings


Re: [GENERAL] Single Row Table?

2004-08-31 Thread Mike Nolan
 ISTM most natural to do this with a rule, e.g.:
 
 CREATE RULE my_insert_rule AS ON INSERT TO my_table DO
 INSTEAD NOTHING;
 
 Which will cause all inserts to be silently dropped. 

This strikes me as bad programming practice.  Errors should be reported, 
not silently ignored.  If the application is doing an insert when it doesn't
need to, then the application is flawed as well.
--
Mike Nolan

---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly


Re: [GENERAL] Single Row Table?

2004-08-31 Thread Thomas Kellerer
Tim Penhey wrote on 30.08.2004 23:12:
I have got a table which is supposed to contain only one row. It does 
not have any primary keys defined.

So, essentially, when a new insert happens in that table, I would like 
it (the insert) to fail if there is already a row existing in that table.


You could try:
id INT PRIMARY KEY NOT NULL DEFAULT(1) CHECK (id = 1),
I like that approach :)
But should you also prevent DELETE's from that table? Otherwise you could 
wind up with no rows at all. I guess that would have to be done using a rule...

Thomas
---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
 joining column's datatypes do not match


Re: [GENERAL] Single Row Table?

2004-08-31 Thread Mike Nolan
 But should you also prevent DELETE's from that table? Otherwise you could 
 wind up with no rows at all. I guess that would have to be done using a rule...

Why not just revoke the delete privilege?
--
Mike Nolan

---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]


Re: [GENERAL] Single Row Table?

2004-08-31 Thread Thomas Kellerer
Mike Nolan wrote on 31.08.2004 21:46:
But should you also prevent DELETE's from that table? Otherwise you could 
wind up with no rows at all. I guess that would have to be done using a rule...

Why not just revoke the delete privilege?

That was one of my first guesses as well, but then I'm not sure if you can 
revoke DELETE and INSERT privilege from the owner of the table...

Thomas
---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
 joining column's datatypes do not match


[GENERAL] Single Row Table?

2004-08-29 Thread Yateen Joshi








Hi,



I have got a table which is supposed to contain only one
row. It does not have any primary keys defined.

So, essentially, when a new insert happens in that table, I
would like it (the insert) to fail if there is already a row existing in that
table.

How can I do that? Can I add any constraints? Or do I need
to write a separate trigger for the same?



Thanks and regards,



Yateen V. Joshi










Re: [GENERAL] Single Row Table?

2004-08-29 Thread Bruno Wolff III
On Fri, Aug 27, 2004 at 13:32:07 +0530,
  Yateen Joshi [EMAIL PROTECTED] wrote:
 Hi,
  
 I have got a table which is supposed to contain only one row. It does
 not have any primary keys defined.
 So, essentially, when a new insert happens in that table, I would like
 it (the insert) to fail if there is already a row existing in that
 table.
 How can I do that? Can I add any constraints? Or do I need to write a
 separate trigger for the same?

A simple way to force this is to add a primary key and a constraint
that forces the primary key to be a particular value.

---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
(send unregister YourEmailAddressHere to [EMAIL PROTECTED])


Re: [GENERAL] Single Row Table?

2004-08-29 Thread Scott Marlowe
On Sun, 2004-08-29 at 15:30, Bruno Wolff III wrote:
 On Fri, Aug 27, 2004 at 13:32:07 +0530,
   Yateen Joshi [EMAIL PROTECTED] wrote:
  Hi,
   
  I have got a table which is supposed to contain only one row. It does
  not have any primary keys defined.
  So, essentially, when a new insert happens in that table, I would like
  it (the insert) to fail if there is already a row existing in that
  table.
  How can I do that? Can I add any constraints? Or do I need to write a
  separate trigger for the same?
 
 A simple way to force this is to add a primary key and a constraint
 that forces the primary key to be a particular value.

Is it reasonable / possible to add a check constraint something like
select count(*) from table =1?


---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
  joining column's datatypes do not match