2015-10-25 20 views
8

Come si scrive e si esegue una query che inserisce valori di array utilizzando libpqxx?Inserimento di valori di matrice

INSERT INTO exampleTable(exampleArray[3]) VALUES('{1, 2, 3}'); 

Questo codice di esempio mi dà:

ERROR: syntax error at or near "'" 

Cosa c'è di sbagliato? Nella documentazione PostgreSQL ho scoperto che:

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"}}'); 
+0

Qual è il tipo di 'examplearray '? – klin

+0

@klin È piccolo ma non importa –

+0

Ovviamente questo è importante. La tua query sarebbe sintatticamente corretta su una colonna di array di testo. – klin

risposta

5

Si consiglia di utilizzare un nome di colonna, senza un indice di inserire un array:

create table example(arr smallint[]); 
insert into example(arr) values('{1, 2, 3}'); 
select * from example; 

    arr 
--------- 
{1,2,3} 
(1 row) 

Utilizzare un nome di colonna con un indice per accedere a un elemento di una tabella:

update example set arr[2] = 10; 
select * from example; 

    arr  
---------- 
{1,10,3} 
(1 row) 

È possibile utilizzare arr[n] in INSERT ma questo ha un significato speciale. Con questa sintassi è possibile creare un array con un elemento indicizzato dal numero dato:

delete from example; 
insert into example(arr[3]) values (1); 
select * from example; 

    arr  
----------- 
[3:3]={1} 
(1 row) 

Come risultato si ha una matrice che limite inferiore è 3:

select arr[3] from example; 
arr 
----- 
    1 
(1 row) 
+0

Funziona, grazie. Ho provato "[]", "[3]", "'" e senza "'" ma non ho provato senza "[]". –

Problemi correlati