Jump to content


Photo

Auto-incremento No Postgresql


  • Faça o login para participar
9 replies to this topic

#1 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 11/08/2008, 18:15

Uma das primeiras colocações de quem migra de outro SGBD para PostgreSQL é:
MySQL: "Aonde está o auto-increment nessa porcaria? Ahhh... no MySQL era muito mais simples."
MS SQL Server: "o que!? Não tem IDENTITY??? Essa porcaria só podia ser free..."
Oracle: "pouts... vou ter que escrever sequences aqui também!?"

Sim.. eu fui um desses. E por um longo tempo eu fiz auto-incremento manualmente.
Até que em um ensolarado dia eu tomei uma Xiboquinha e li o manual (genial, não!?). Nesse dia eu me senti um idiota.

Não! PostgreSQL não implementa a propriedade auto-increment e muito menos a identity (e sim, isso é bom)!

Sim, assim como acontece nos dois SGBDs mais respeitados do mercado (Oracle, desde sei lá quando, e DB2, desde a versão 7.2), o PostgreSQL implementa o objeto SEQUENCE.

SEQUENCEs são reconhecidamente mais flexíveis!

Por outro lado, criar uma SEQUENCEs dá um baita trabalho. Linka-la a uma coluna então, nem se fala. Veja o exemplo abaixo:

-- Crio a tabela
CREATE TABLE tabela (
id integer NOT NULL,
nota integer
);

-- Crio a sequência
CREATE SEQUENCE tabela_id_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;

-- Relaciona a sequência com a coluna da tabela
ALTER SEQUENCE tabela_id_seq OWNED BY tabela.id;
ALTER TABLE tabela ALTER COLUMN id SET DEFAULT nextval('tabela_id_seq'::regclass);


Complicado... é... eu sei.
Mas por sorte Deus deu ao ser humano a preguiça. Foi graças a ela um cara criou um "pseudo-tipo" chamado serial.
O tipo serial cria um campo integer, cria a sequence e relaciona um ao outro automaticamente. Exemplo:

CREATE TABLE tabela (
id serial NOT NULL,
nota integer
);


O resultado será o mesmo :)

Nota 1:
Eventuais alterações no comportamento da SEQUENCE podem ser feitas com ALTER SEQUENCE normalmente.

Nota 2:
Além do tipo serial (int4) existe o bigserial (int8)

Nota 3:
Para recuperar o número gerado pela SEQUENCE em um INSERT use algo como INSERT INTO tabela (nota) VALUES(10) RETURNING id;

Nota 4:
Para garantir a integridade dos dados na entrada da tela use SELECT nextval('tabela_id_seq'::regclass). O número gerado nesse SELECT não se repetirá mesmo que a inserção seja cancelada.


Referência: http://www.postgresq...s-sequence.html

Edição feita por: boirock, 30/11/2008, 18:18.


#2 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 16/09/2017, 20:10

Cordarone buy cialis Se Vende Cialis Sin Receta Cialis En Farmacias De Andorra Acheter Misoprostol Sur Internet Viagra Generika Frau cialis price Amoxicillin Overdose In Dogs
Cialis Generika Bewertung cialis Viagra Schachtel Direct No Rx Doryx Online Cash Delivery Cost Comparison Viagra Vs Cialis 250 viagra cialis Cheap Propecia Generic
Clobetasol Free Shipping online pharmacy Online Amoxil No Prescription Orlistat En Vente Libre Is Doxycycline The Same As Amoxicillin Bacterial Infection Keflex cheap cialis Z Pack Antibiotic Online

#3 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 21/09/2017, 14:46

Fast Delivery On Doxycyclene cialis price Meglio Levitra O Cialis
Hydrochlorothiazide Drugs No Prescription Acheter Propecia Sans Ordonnance
Propecia Vom Markt cialis price Cialis Online Opinioni

#4 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 13822 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 21/09/2017, 21:50

Get Cheap Cialis Online buy cialis Amoxicillin Normal Dose
Viagra Marken Propecia Ejaculation Propecia
Viagra Composizione cialis Generic Clobetasol Delivered On Saturday In Australia

#5 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 26/09/2017, 07:50

Kamagra Sildenafil Preis Priligy Pharmacies online pharmacy Uses For Keflex Dog Ph And Amoxicillin Buy Viagra Online In The United States

#6 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 05/10/2017, 18:12

Is It Illegal To Buy Lasix Online Cialis 20mg Dosage buy cialis Medicament Propecia Effet Secondaire Venta Cialis En Tenerife Mycobacterium Tuberculosis Amoxicillin Glam
Kamagra In Belgio Viagra Professional Vs Regular Viagra Obtenez Dapoxetine Online No Prescription cheap cialis Acquista Cialis Tadalafil Acheter Viagra Suisse
Cheap Valtrex 1000mg Achat Cialis Cheque viagra Achat Kamagra Orleans Cialis Euros

#7 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 11724 posts

Posted 14/10/2017, 07:38

Buying Genericviagrawithpaypal viagra Generika Cialis Potenzmittel Wholesale Cialis Paid With Paypal Levitra Taglich
Viagra Prescription Without Cialis Sale buy viagra Where To Buy Cialis Deltasone Buy Synthroid Without Rx
Clomid A Quoi Sert viagra online Medication From Canada Article9

#8 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 21/10/2017, 06:14

Original Viagra Kaufen Dapoxetine Buy viagra online prescription Uti And Amoxicillin where can i buy isotretinoin skin health low price mastercard
Macrobid Niftran Bacterial Infections viagra Radio Advertisments For Healthy Man Comprar Cialis En Valladolid
Viagra Acquistasi cialis Baclofene Bernard Granger Echo Cialis

#9 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 31/10/2017, 14:34

Viagra Da Dolor De Cabeza Cialis Seguro Buy Cialis Through Paypal generic levitra 20mg Baclofene Italie Doxycline Chicago Usa Online Pharmacy Paroxetine
Levitra Bucodispersable 5 Mg Sale Original Propecia levitra price per pill Cialis Sovradosaggio
Acquistare Levitra Generico Italia Zithromax For Kids Discount Fedex Shipping Macrobid Furadantin Website Low Price cheap cialis Zithromax Side Affects Kamagra Thailand Xenical Generique

#10 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 22/11/2017, 15:19

Generic Lasix online pharmacy Order Tamoxifen Citrate Single Dose Amoxicillin Comprar Cialis Receta
Overnight Shipping Pain Killers Propecia Side Effects 5mg viagra online pharmacy Amoxicillin First Sinus Infection
Propecia En Farmacias cialis elevitra professionale Cephalexin Interaction With Acohole
Levitra 20mg Tablets Price Buy Estrogen Pills Discount Viagara viagra Combining Metronidazole And Amoxicillin




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq