Comment écrire et exécuter une requête qui insère des valeurs de tableau à l'aide de libpqxx?
INSERT INTO exampleTable(exampleArray[3]) VALUES('{1, 2, 3}');
Cet exemple de code me donne:
ERROR: syntax error at or near "'"
Qu'est-ce qui ne va pas? Dans la documentation PostgreSQL, j'ai trouvé que:
CREATE TABLE sal_emp (
name text,
pay_by_quarter integer[],
schedule text[][]
);
...
INSERT INTO sal_emp
VALUES ('Bill',
'{10000, 10000, 10000, 10000}',
'{{"meeting", "lunch"}, {"training", "presentation"}}');
Vous devez utiliser un nom de colonne sans index pour insérer un tableau:
create table example(arr smallint[]);
insert into example(arr) values('{1, 2, 3}');
-- alternative syntax
-- insert into example(arr) values(array[1, 2, 3]);
select * from example;
arr
---------
{1,2,3}
(1 row)
Utilisez le nom de la colonne avec un index pour accéder à un seul élément du tableau:
select arr[2] as "arr[2]"
from example;
arr[2]
--------
2
(1 row)
update example set arr[2] = 10;
select * from example;
arr
----------
{1,10,3}
(1 row)
Vous pouvez utiliser arr[n]
dans INSERT
mais cela a une signification particulière. Avec cette syntaxe, vous pouvez créer un tableau avec un élément indexé à partir du nombre donné:
delete from example;
insert into example(arr[3]) values (1);
select * from example;
arr
-----------
[3:3]={1}
(1 row)
En conséquence, vous avez un tableau dont la limite inférieure est 3:
select arr[3] from example;
arr
-----
1
(1 row)