![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 17.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Jak zrobić autonumerowanie w Postgre przy zakładaniu tabeli?
Z góry dzięki. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 786 Pomógł: 0 Dołączył: 18.03.2002 Skąd: Wroclaw/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Hej
Cytat Jak zrobić autonumerowanie w Postgre przy zakładaniu tabeli?
http://pgsql.spsk1.pl/postgresql-faq.html i odpoweidz nr 16 ;) Pozdrawiam -------------------- .. make web your home ..
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 17.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzieki. Czy do zinicjowania trzeba wpisać wartość początkową id?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 680 Pomógł: 0 Dołączył: 1.10.2002 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat Wielkie dzieki. Czy do zinicjowania trzeba wpisać wartość początkową id?
Nie trzeba... -------------------- "Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 17.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Pytam bo na mySQL wszystko działa mi ok. Klopoty zaczęły się po zmianie przez usługodawce na PostgreSQL 7.2. Mam Komunikat:
Warning: pg_exec() query failed: ERROR: ExecAppend: Fail to add null value in not null attribute id in /home/smpolk/www/ksiegadodaj.php on line 24 blad bazy! Podobny występuje w MySQL gdy w tworzeniu tabeli nie dałem auto_increment. Według wskazanego Faq'u wstawiłem id serial które powinno odpowiadać autonumeracji jaką miałem w MySQL'u: [php:1:452692e0a9] $laczenie=pg_Connect ("host=127.0.0.1 port=5432 dbname=smpolk user=smpolk password=costam"); $zapytanie = "CREATE TABLE wpis ("."id serial,". "autor char(30),". "email char (50), ". "text varchar(255) not null,". "datawpisu date default '2003-01-01' not null". ")"; $wynik = pg_Exec($laczenie,$zapytanie); if($wynik) echo "Tabela założona prawidłowo !<br>"; else { echo "Blad ! Tabela nie została założona !<br>"; } [/php:1:452692e0a9] Niestety nie działa. Działający fragment kodu w MySQL: [php:1:452692e0a9] mysql_connect("127.0.0.1","",""); $zapytanie = "CREATE DATABASE gosc"; $wynik = mysql_query($zapytanie); if($wynik) echo "Baza została założona !<br>"; else echo "Baza nie została założona !<br>"; mysql_select_db(gosc); $zapytanie = "CREATE TABLE wpis ( ". "id int DEFAULT '0' NOT NULL auto_increment primary key, ". "autor char(30), ". "email char (50), ". "text varchar(255) not null,". "datawpisu date DEFAULT '0000-00-00' NOT NULL". ")"; $wynik = mysql_query($zapytanie); if($wynik) echo "Tabela założona prawidłowo !<br>"; else { echo "Blad ! Tabela nie została założona !<br>"; } [/php:1:452692e0a9] Pozdrawiam |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Popraw znaczniki BBCode.
-------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 17.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Linijka kodu:
[php:1:0adcb77e62] $query = "INSERT INTO wpis VALUES(null, '$autor', '$text', "; [/php:1:0adcb77e62] dzała na Mysql ponieważ wartość null inicjuje autonumerowanie (wskazuje automatycznie że należy przejść do następnego rekordu w bazie) Czy w Postgre 'null' trzeba zamienić na coś innego? Normalnie wyświetla się wypisany wcześniej komunikat o niemożności dodania wartości pustej. Pozdrawiam |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 87 Pomógł: 1 Dołączył: 22.04.2002 Skąd: Szubin Ostrzeżenie: (0%) ![]() ![]() |
Cytat [php:1:7124ae4438]
$query = "INSERT INTO wpis VALUES(null, '$autor', '$text', "; [/php:1:7124ae4438] Czy faktycznie masz przecinek na koncu zapytania sql?? |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 17.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Nie to jest fragment dłuższego zapytania łączonego za pomocą "." - to jest w porządku.
Widziałem w Chipie rozwiązanie w Postgre gdzie w linijce: [php:1:0b706625aa] $sql=insert into tabela values('konkretna_wartosc')"; [/php:1:0b706625aa] nie jest wpisywana żadna wartość do klucza głównego aby rósł. W MySQL byłoby: [php:1:0b706625aa] $sql=insert into tabela values(null,'konkretna_wartosc')"; [/php:1:0b706625aa] oczywiście przy założeniu że w Postgre mam pierwszą kolumnę id serial a w MySQL id auto_increment... |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 87 Pomógł: 1 Dołączył: 22.04.2002 Skąd: Szubin Ostrzeżenie: (0%) ![]() ![]() |
Twoje:
[php:1:1d66793fad]<?php $query = "INSERT INTO wpis VALUES(null, '$autor', '$text', "; ?>[/php:1:1d66793fad] Ja bym zrobił taki wpis: [php:1:1d66793fad]<?php $query = "INSERT INTO wpis VALUES('', '$autor', '$text', "; ?>[/php:1:1d66793fad] Zdaje się wtedy na baze, aby wstawiła wartość domyślną, a nie 'null'. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 17.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Dziwne ale przy rozwiązaniu '_' skrypt wysyła error o duplikacji klucza. Generalnie nie przechodzi do drugiego wiersza tylko próbuje chyba wpisywać ciągle do 1 rekordu.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 17.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Panowie dostałem na skrzynkę rozwiązanie od admina PostgreSQL.
zamiast null jest nextval('wpis_id_seq') Niezle 8O Pozdrawiam |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 3 Dołączył: 4.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(DanielBB) Panowie dostałem na skrzynkę rozwiązanie od admina PostgreSQL. zamiast null jest nextval('wpis_id_seq') Niezle 8O hehe Cytat 'nextval()' function not found taka odp serwera. autonumerowanie odbywa sie za pomoca typu serial i w tym polu trzeba wpisac DEFAULT i smiga ![]()
bynajmniej w wersji 8.1 postgresql tak jest pozdrawiam Ten post edytował jezoo 29.11.2006, 13:51:15 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
jeśli się nie mylę to typ serial to 'pseudo' typ, bo to samo osiągniemy przez:
A przy tworzeniu SEQUENCE mamy o wiele większe możliwości... pomijając fakt kiedy to jest naprawdę użyteczne ![]() -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 20:36 |