Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skrócony INSERT dla tabeli z AUTO_INCREMENT
sannin
post 9.02.2012, 19:22:24
Post #1





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

Ostrzeżenie: (0%)
-----


Witam,
stworzyłem tabele:
  1. CREATE TABLE company
  2. (
  3. company_id serial NOT NULL,
  4. name character varying(25) NOT NULL,
  5. name_short character varying(5),
  6. CONSTRAINT company_pkey PRIMARY KEY (company_id )
  7. )

Jeżeli chcę wstawić do niej rekord muszę pisać:
  1. INSERT INTO company (name, name_short) VALUES ('Polska Huta', 'PLH');

Czy jest możliwość skróconego zapisu ? Tak ja np. w MySql:
  1. INSERT INTO company VALUES (0, 'Polska Huta', 'PLH');

Ogólnie rzecz biorąc ten zapis przechodzi, ale nie wstawia wartości auto tylko 0 :/ Z góry wielkie dzięki smile.gif
Pozdrawiam A.

Ten post edytował sannin 9.02.2012, 19:24:13
Go to the top of the page
+Quote Post
AsYlum
post 11.02.2012, 19:20:52
Post #2





Grupa: Nieautoryzowani
Postów: 8
Pomógł: 1
Dołączył: 18.07.2007

Ostrzeżenie: (0%)
-----


Skoro podajesz wartość 0 to wstawia 0 smile.gif

W miejsce 0 musisz wpisać DEFAULT.

Możesz też używać tego typu konstrukcji:

Kod
INSERT INTO tabela (kol1, kol2, kol3) VALUES
  ('a','b','c'),
  ('c','d','e'),
  ('f','g','h');


Ten post edytował AsYlum 11.02.2012, 19:21:45
Go to the top of the page
+Quote Post
viking
post 11.02.2012, 19:56:22
Post #3





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Jeszcze uzupełniając dodam jedną rzecz http://www.postgresql.org/docs/9.1/static/...s-sequence.html
Ponieważ PG operuje na sekwencjach możesz też używać nextval().


--------------------
Go to the top of the page
+Quote Post
cojack
post 13.02.2012, 11:07:06
Post #4





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


http://www.postgresql.org/docs/9.1/static/sql-insert.html

dlaczego ma działać auto jak podałeś mu wszystkie kolumny?

btw2 nie da się zrobić insertu nie podając kolumn które chce się uzupełnić.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
sannin
post 13.02.2012, 13:50:13
Post #5





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

Ostrzeżenie: (0%)
-----


Dzięki.

@cojack: Nie masz racji, podawanie kolumn jest nieobowiązkowe, również co do auto się myslisz podając wszystkie kolumny i wpisując DEFAULT lub nextval() jak podali koledzy wyżej też działa.
Pozdro.
Go to the top of the page
+Quote Post
cojack
post 13.02.2012, 16:53:37
Post #6





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


używaj nextval() to się przekręcisz w końcu. Nie polecam używać nextval() a na pewno nie przy serial.

@edit

z tym nie podawaniem kolumn chodziło mi o to że nie da się zrobić takiego insertu:

  1. INSERT INTO tabela VALUES ('asd', '213');
gdzie struktura jest taka jak u Ciebie. Dlatego zawsze definiuje się kolumny które podajesz. Przyjmij tą praktykę za pewnik to nigdy nie będziesz miał problemu.

Ten post edytował cojack 13.02.2012, 16:55:45


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
viking
post 15.02.2012, 19:03:43
Post #7





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Ja dodam że bardziej ten link podałem aby pamiętać o tym, bo oczywiście wygodniejsze będzie wstawianie DEFAULT ale mogą też pojawić się sytuacje w których chcemy jednak operować na sekwencji (np jakieś wybranie numeru w procedurze).


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 18:40