Pular para o conteúdo principal

Arrays no PostgreSQL

Aquele mesmo projeto que estou trabalhando me exigiu aprender como adicionar um array em tabelas do PostgreSQL. É algo bem simples de se utilizar. Vamos começar criando uma tabela que recebe os arrays:

CREATE TABLE entrada (
  id SERIAL PRIMARY_KEY,
  nf integer,
  data_reg timestamp without time zone DEFAULT now(),
  data_inst timestamp without time zone,
  descricao text,
  materiais text[][],
  funcionario varchar(50)
)


Criei uma tabela chamada entrada, que serve para registrar materiais vindos para a instituição. As rows possuirão:
  • id (PRIMARY_KEY),
  • nf (número de nota fiscal),
  • data_reg (data em que a query será registrada),
  • data_inst (data que entrou na instituição),
  • descricao (qualquer observação que precisem colocar)
  • funcionario (id do funcionário que realizou a operação)
  • materiais (É nesse momento que inserimos os arrays...
 Nesse caso, criei um campo (materiais), que é um array de arrays.
 Coloco o tipo de campo, no caso text e o que define-o como array "[]", coloquei os colchetes duas vezes por que intenção é que eu possa colocar vários materiais em diferentes quantidades para cada entrada.)


Será necessário agora saber como adicionar ítens em sua tabela:

INSERT INTO entrada(
    nf,
    data_reg,
    data_inst,
    descricao,
    materiais,
    funcionario)
VALUES (
    '65184621',
    '2012-03-04 16:21:55',
    '2012-03-09 14:52:45',
    'Entrada de material no setor',
    'Paulo George',
    ARRAY[
        ['Resma A4 Clone',14],
        ['Caixa de Canetas BIC',9]
    ])

Não vou explicar como funciona o INSERT do PostgreSQL.
No valor do ítem materiais, temos um ARRAY[] que tem arrays: []. Não precisamos escrever ARRAY[], dentro de um array. Colocamos somente os valores dentro dos colchetes, da forma que está escrita no exemplo acima.

Como eu já havia dito, a dica de hoje é bem simples.
Espero ter ajudado e até a próxima.

Comentários

Postagens mais visitadas deste blog

View em PostgreSQL

Estou fazendo um programa de almoxarifado e decidi me aventurar no Postgres. Por coincidência acabei estudando bancos de dados em geral. Aprendi uma maneira muito simples de aumentar a velocidade do programa e reaproveitar código. Ao utilizar uma view, os dados já ficam pré-recarregados no servidor, então ao retirar os dados, você não está fazendo uma consulta completa no DB, pois ela já foi efetuada. Mão na massa...
Tenho as seguintes tabelas:

CREATE TABLE material (
  id SERIAL PRIMARY KEY,  -- auto_increment da ID
  nome varchar(200),      -- Nome
  modelo varchar(100),    -- Modelo
  tipo int,               -- Tipo (Pego em tabela tipo)
  marca int,              -- Marca (Pego em tabela marca)
);


CREATE TABLE tipo (
  id SERIAL PRIMARY KEY,  -- auto_increment da ID
  tipo varchar(100),      -- Tipo de produto
);
CREATE TABLE marca (
  id SERIAL PRIMARY KEY,  -- auto_increment da ID
  marca varchar(100),     -- Marca do produto
);
Vamos somente adicionar alguns valores para que tenha…

Problemas com o automount do VMWare Tools

Precisei compartilhar uma pasta de meu host linux com minha VM Fedora através do compartilhamento de pastas do vmware-tools e o problema que eu tive é que o vmware-tools simplesmente montava a pasta automaticamente no /mnt/hgfs. Pra mim isso foi um problema muito grande, porque eu não podia usar links simbólicos por particularidades do projeto mesmo.


Pra resolver o problema eu fui ao arquivo /etc/rc.d/init.d/vmware-tools e no trecho a seguir, que faz parte da funcao main(), eu comentei a linha como está a seguir:
vmware_exec 'Mounting HGFS shares:' vmware_mount_vmhgfsA partir disso ao iniciar o daemon, as unidades não serão montadas e você poderá fazer montagem através do fstab em diferentes locais.Faça suas modificações por sua conta em risco.

Funções básicas em Python

Como é de praxe, no primeiro post desse blog, vou dizer quais são minhas intensões para meus futuros posts. Estudo programação a algum tempo e programo em PHP. Ainda tenho muito o que melhorar, mas espero que meu pequeno conhecimento sirva para ajudar outros que começaram sozinhos como eu.


Mas vamos ao ponto...


Ao "tentar" aprender Python através da documentação, pude ver as particularidades dessa linguagem comparada com o PHP, vou sempre fazer menção ao PHP, pois é nessa linguagem que realmente sei programar.

if x < 0 :
    print("Número negativo")
elif x = 0 :
    print("Número igual a zero")
elif x < 0 :
    print("Número positivo")
else :
    print("Isso não é um número")
    print("Digite um número!")

Comando seguido da condicional e ":"

Coloquei 4 espaços para começar a escrever o que está dentro da condicional.
O que diferencia o que está dentro do if e fora é justamente esse espaço. (Talvez não seja nec…