Обсуждение: HOWTO pass "default value" to PQexecParams ?

Поиск
Список
Период
Сортировка

HOWTO pass "default value" to PQexecParams ?

От
JiangWei
Дата:
-- SQL Script

Create Table test (   id int4 not null,   name text default '<noname>'
);


-- C

PQexec (conn, "INSERT INTO test(id, name) VALUES (100,default)" ); // OK.

PQexecParams (conn, "INSERT INTO test(id, name) VALUES ($1, $2)" ); // 
$1=100, $2= ????


Re: HOWTO pass "default value" to PQexecParams?

От
Volkan YAZICI
Дата:
AFAIK, it's not possible to point the field's default value using a
special value in the related array member. Because, you cannot declare
any special value in the array: NULL will be treated as NULL and other
char values as is.

(Recommended.) Why don't you omit id in the target table fields?
For instance:
 sprintf(sql_cmd, "INSERT INTO test ("                  (id_will_be_default) ? "" : "id, "                  "name)
VALUES("                  "..."); PQexecParams(conn, sql_cmd, ...);
 

You can also learn the default value of the related field too. (For
more information, run psql with -E parameter and type \d <table>.)

Furthermore, it's possible to define a RULE like:
 ON INSERT IF NEW.id = 0   USE DEFAULT

This will assume 0 as a reference to default value.


HTH.
Regards.


On Jan 06 09:16, JiangWei wrote:
> Create Table test (
>    id int4 not null,
>    name text default '<noname>'
> );
> 
> PQexec (conn, "INSERT INTO test(id, name) VALUES (100,default)" ); // OK.
> 
> PQexecParams (conn, "INSERT INTO test(id, name) VALUES ($1, $2)" ); // 
> $1=100, $2= ????


Re: HOWTO pass "default value" to PQexecParams?

От
JiangWei
Дата:
Volkan YAZICI wrote:

>AFAIK, it's not possible to point the field's default value using a
>special value in the related array member. Because, you cannot declare
>any special value in the array: NULL will be treated as NULL and other
>char values as is.
>  
>
We can declare a specialized oid for this.


Re: HOWTO pass "default value" to PQexecParams?

От
Volkan YAZICI
Дата:
On Jan 09 04:18, JiangWei wrote:
> >AFAIK, it's not possible to point the field's default value using a
> >special value in the related array member. Because, you cannot declare
> >any special value in the array: NULL will be treated as NULL and other
> >char values as is.
>
> We can declare a specialized oid for this.

You mean in the parameter types? If so, is this supported by PostgreSQL?


Regards.


Re: HOWTO pass "default value" to PQexecParams?

От
JiangWei
Дата:
Volkan YAZICI wrote: <blockquote cite="mid20060109104145.GA546@alamut" type="cite"><pre wrap="">On Jan 09 04:18,
JiangWeiwrote: </pre><blockquote type="cite"><blockquote type="cite"><pre wrap="">AFAIK, it's not possible to point the
field'sdefault value using a
 
special value in the related array member. Because, you cannot declare
any special value in the array: NULL will be treated as NULL and other
char values as is.     </pre></blockquote><pre wrap="">We can declare a specialized oid for this.
</pre></blockquote><prewrap="">
 
You mean in the parameter types? </pre></blockquote> Yes.<br /><blockquote cite="mid20060109104145.GA546@alamut"
type="cite"><prewrap="">If so, is this supported by PostgreSQL? </pre></blockquote> No. Just an idea.  "EXPRESSION_OID"
for'DEFAULT' , ' foo ( id, 2) ',  'm * n + x' ...<br /><br /><br />