Thread: how to execute a C program via trigger ?
Hi, I am using Red Hat 6.1 + PostgreSQL 7.0.3. All of my applications are developed by C and ECPG. I would like to know how to execute a C program by Trigger,for example: 1. I have a program my_c_program.c shuch as: #include <stdio.h> main() { printf("Hello World !\n"); } 2. I create a table foo by following command CREATE TABLE foo(x int4); 3. create a trigger foo_trig : create trigger foo_trig after update on foo for each row execute procedure sql_c(); 4. I don't know how to design sql_c(),can anyone give a small plpsql program that can execute my_c_program? regards, S.F. Lee __________________________________________________ Do You Yahoo!? Yahoo! Shopping - Thousands of Stores. Millions of Products. http://shopping.yahoo.com/
take a look at the contrib sections fti or fulltext index example it takes you through it all "S.F. Lee" wrote: > > Hi, > > I am using Red Hat 6.1 + PostgreSQL 7.0.3. All of > my > applications are developed by C and ECPG. I would > like to know how to execute a C program by Trigger,for > example: > > 1. I have a program my_c_program.c shuch as: > > #include <stdio.h> > main() > { > printf("Hello World !\n"); > } > > 2. I create a table foo by following command > > CREATE TABLE foo > ( > x int4 > ); > > 3. create a trigger foo_trig : > > create trigger foo_trig after update > on foo for each row execute procedure sql_c(); > > 4. I don't know how to design sql_c(), can anyone > give a small plpsql program that can execute > my_c_program? > > regards, S.F. Lee > > __________________________________________________ > Do You Yahoo!? > Yahoo! Shopping - Thousands of Stores. Millions of Products. > http://shopping.yahoo.com/
Thank for your hint, but I have some questions : 1. Do I have to compile the C program into a shared object (*.so)? 2. Do I have to use SPI (SPI is too complicate to me)? My request is very simple. I have a program (my_c_program) that I can execute it under shell by typing (my_c_program). Basically my_c_program is not a function. I want to fire a trigger after I update the field (x) in table foo, and the trigger can run the my_c_program. Is there an easy way to execute a PROCESS via trigger? regards, S.F. Lee --- clayton cottingham <clayton@marketingchallenge.com> wrote: > take a look at the contrib sections fti or fulltext > index example > > it takes you through it all > > > > "S.F. Lee" wrote: > > > > Hi, > > > > I am using Red Hat 6.1 + PostgreSQL 7.0.3. All > of > > my > > applications are developed by C and ECPG. I would > > like to know how to execute a C program by > Trigger,for > > example: > > > > 1. I have a program my_c_program.c shuch as: > > > > #include <stdio.h> > > main() > > { > > printf("Hello World !\n"); > > } > > > > 2. I create a table foo by following command > > > > CREATE TABLE foo > > ( > > x int4 > > ); > > > > 3. create a trigger foo_trig : > > > > create trigger foo_trig after update > > on foo for each row execute procedure sql_c(); > > > > 4. I don't know how to design sql_c(), can > anyone > > give a small plpsql program that can execute > > my_c_program? > > > > regards, S.F. Lee > > > > __________________________________________________ > > Do You Yahoo!? > > Yahoo! Shopping - Thousands of Stores. Millions of > Products. > > http://shopping.yahoo.com/ __________________________________________________ Do You Yahoo!? Yahoo! Shopping - Thousands of Stores. Millions of Products. http://shopping.yahoo.com/
Hi there, I'm having some problems with the performance on queries including a join. for example: SELECT members_data.pwd FROM emails,members_data WHERE emails.email = 'koen@v3.com' AND emails.uin = members_data.uin; is a lot slower then extracting the join into 2 seperate queries like: SELECT emails.uin FROM emails WHERE lower(emails.email) = 'koen@v3.com'; --and use the result in the next query ($db_result) SELECT members_data.pwd FROM members_data WHERE members_data.uin = $db_result; Now the login routine is MUCH faster ;-) , but performance problems remain when the the result is more than 1 record (Unlike a unique emailaddress...) Is there anyone out there who has ideas how to write faster queries including tablejoins? I already tried Inner Join, Natural Join and Join On, wich didn't seem affect the performance in any way... Kind regards, Koen Antonissen koen@trilab.com www.trilab.com
Hi, Is any other SQL implicit cursor attribute in PL/plsql ?? when you say (in pl/plsql): select field into v_1 from atable where whatever; special variable FOUND can be used to tell return is null or not. this functions like SQL%FOUND or SQL%NOTFOUND in Oracle, however, when I do some DML(insert,delete,update), is there any other special variable can tell me howmany success. Like SQL%ROWCOUNT in Orcale?? And if there is an error such as : cannot insert since duplicate key on an unique index, is it possible to catch it?? Thanks. -- Jie LIANG Internet Products Inc. 10350 Science Center Drive Suite 100, San Diego, CA 92121 Office:(858)320-4873 jliang@ipinc.com www.ipinc.com
On Mon, 4 Dec 2000 18:20:29 -0800 (PST), S.F. Lee said: > Thank for your hint, but I have some questions : > > 1. Do I have to compile the C program into a shared > object (*.so)? yes > 2. Do I have to use SPI (SPI is too complicate to > me)? > > My request is very simple. I have a program > (my_c_program) > that I can execute it under shell by typing > (my_c_program). > Basically my_c_program is not a function. > im not sure anyone? > I want to fire a trigger after I update the field > (x) in table foo, and the trigger can run the > my_c_program. Is there an easy way to execute a > PROCESS > via trigger? > > regards, S.F. Lee > id say dont use C!! use pl/sql but if your trying to learn the prog of c functions youll have to get help elsewhere unfortunatley im not even newbie status on c!