Re: [GENERAL] Syntax error in trigger

2010-04-22 Thread Jignesh Shah
I got it resolved. I just need to put below statement into single quote
instead of double quote. :)

my $query ='INSERT INTO log_table(id) SELECT $1 EXCEPT SELECT id FROM
log_table WHERE id = $1;';

Thanks,
Jignesh

On Thu, Apr 22, 2010 at 2:02 PM, Jignesh Shah wrote:

> Thanks Anreas but I think that's not a issue. The issue is something to do
> with "$1". I don't know how to get rid of it.
>
> techdb=# INSERT INTO log_table(id) SELECT 5 EXCEPT SELECT id FROM log_table
> WHERE id = 5;
> INSERT 0 1
> techdb=# select * from log_table;
>  id |  txid  |   txtime
> ++
>   5 | 196552 | 2010-04-22 09:30:10.509326
> (1 row)
> techdb=#
>
> Could anyone please help me out here.
>
> Thanks,
> Jignesh
>   On Wed, Apr 21, 2010 at 9:04 PM, Andreas Kretschmer <
> akretsch...@spamfence.net> wrote:
>
>> Jignesh Shah  wrote:
>>
>> > Hi All,
>> >
>> > I have written below trigger and applied on the table but it is giving
>> syntax
>> > error when it gets invoked. Could you please help me what is wrong? I
>> have
>> > given complete details here:
>> >
>> > my trigger function:
>> >
>> > CREATE OR REPLACE FUNCTION techdb_logtable_trigger()
>> >   RETURNS trigger AS
>> > $BODY$
>> > my $id= $_TD->{new}{'id'};
>> > my $query = "
>> >INSERT INTO log_table(id)
>> >SELECT $1
>> >EXCEPT SELECT id   --> throwing error for here: syntax error at or
>> near
>>
>> Select from which table? I think, there is the table-name missing,
>> right?
>>
>>
>> Andreas
>> --
>> Really, I'm not out to destroy Microsoft. That will just be a completely
>> unintentional side effect.  (Linus Torvalds)
>> "If I was god, I would recompile penguin with --enable-fly."   (unknown)
>> Kaufbach, Saxony, Germany, Europe.  N 51.05082°, E 13.56889°
>>
>> --
>> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
>> To make changes to your subscription:
>> http://www.postgresql.org/mailpref/pgsql-general
>>
>
>


Re: [GENERAL] Syntax error in trigger

2010-04-22 Thread Jignesh Shah
Thanks Anreas but I think that's not a issue. The issue is something to do
with "$1". I don't know how to get rid of it.

techdb=# INSERT INTO log_table(id) SELECT 5 EXCEPT SELECT id FROM log_table
WHERE id = 5;
INSERT 0 1
techdb=# select * from log_table;
 id |  txid  |   txtime
++
  5 | 196552 | 2010-04-22 09:30:10.509326
(1 row)
techdb=#

Could anyone please help me out here.

Thanks,
Jignesh
On Wed, Apr 21, 2010 at 9:04 PM, Andreas Kretschmer <
akretsch...@spamfence.net> wrote:

> Jignesh Shah  wrote:
>
> > Hi All,
> >
> > I have written below trigger and applied on the table but it is giving
> syntax
> > error when it gets invoked. Could you please help me what is wrong? I
> have
> > given complete details here:
> >
> > my trigger function:
> >
> > CREATE OR REPLACE FUNCTION techdb_logtable_trigger()
> >   RETURNS trigger AS
> > $BODY$
> > my $id= $_TD->{new}{'id'};
> > my $query = "
> >INSERT INTO log_table(id)
> >SELECT $1
> >EXCEPT SELECT id   --> throwing error for here: syntax error at or
> near
>
> Select from which table? I think, there is the table-name missing,
> right?
>
>
> Andreas
> --
> Really, I'm not out to destroy Microsoft. That will just be a completely
> unintentional side effect.  (Linus Torvalds)
> "If I was god, I would recompile penguin with --enable-fly."   (unknown)
> Kaufbach, Saxony, Germany, Europe.  N 51.05082°, E 13.56889°
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>


Re: [GENERAL] Syntax error in trigger

2010-04-21 Thread Andreas Kretschmer
Jignesh Shah  wrote:

> Hi All,
>  
> I have written below trigger and applied on the table but it is giving syntax
> error when it gets invoked. Could you please help me what is wrong? I have
> given complete details here:
>  
> my trigger function:
>  
> CREATE OR REPLACE FUNCTION techdb_logtable_trigger()
>   RETURNS trigger AS
> $BODY$
> my $id= $_TD->{new}{'id'};
> my $query = "
>INSERT INTO log_table(id)
>SELECT $1
>EXCEPT SELECT id   --> throwing error for here: syntax error at or near

Select from which table? I think, there is the table-name missing,
right?


Andreas
-- 
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect.  (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly."   (unknown)
Kaufbach, Saxony, Germany, Europe.  N 51.05082°, E 13.56889°

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[GENERAL] Syntax error in trigger

2010-04-21 Thread Jignesh Shah
Hi All,

I have written below trigger and applied on the table but it is giving
syntax error when it gets invoked. Could you please help me what is wrong? I
have given complete details here:

*my trigger function:*
**
CREATE OR REPLACE FUNCTION techdb_logtable_trigger()
  RETURNS trigger AS
$BODY$
my $id= $_TD->{new}{'id'};
my $query = "
   INSERT INTO log_table(id)
*   SELECT $1
   EXCEPT SELECT id   --> throwing error for here: syntax error at or near
"EXCEPT"*
   FROM loggingtable
   WHERE id = $1;";

if (exists($_SHARED{$query})) {
 $plan  = $_SHARED{$query};
} else {
 $plan  = spi_prepare($query, 'INTEGER');
 $_SHARED{$query} = $plan;
}
spi_exec_prepared($plan, '$id');
$BODY$
LANGUAGE 'plperl' VOLATILE SECURITY DEFINER

*Tables and trigger definitions:*

CREATE TABLE techdb_table( id integer NOT NULL,  info varchar NOT NULL );

CREATE TABLE log_table(  id integer NOT NULL,  txid integer NOT NULL DEFAULT
txid_current(),  txtime timestamp NOT NULL DEFAULT transaction_timestamp());

 CREATE TRIGGER techdb_trigger
BEFORE INSERT ON techdb_table
FOR EACH ROW EXECUTE PROCEDURE techdb_logtable_trigger();

*Error message:*

Executing "insert into techdb_table values(1, 'test');" command gives below
error.

ERROR:  error from Perl function "techdb_logtable_trigger": syntax error at
or near "EXCEPT" at line 15.
** Error **
ERROR: error from Perl function "techdb_logtable_trigger": syntax error at
or near "EXCEPT" at line 15.
SQL state: XX000

Thanks,
Jignesh