php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.01.2012, 20:29  
Benutzer
 
Registriert seit: 01.11.2010
Beiträge: 96
PHP-Kenntnisse:
Anfänger
Internetdepp ist in Verruf geraten
Standard 2mal Autowert in mysql Tabelle

hallo,

gibt es die Möglichkeit 2 Felder als autoincrement zu definieren...?
Internetdepp ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.01.2012, 21:48  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

nein - nicht per create-table .. außerdem läuft das dem Sinn des ganzen entgegen.
Diese auto_wert / auto_increment -Geschichte dient doch nur dazu einen unabhängigen Primärschlüssel für jeden Datensatz zu haben, der sich definitiv immer von allen anderen Datensätzen unterscheidet

wozu sollte man davon einen 2ten benötigen?
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 26.01.2012, 22:28  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von eagle275 Beitrag anzeigen
nein - nicht per create-table .. außerdem läuft das dem Sinn des ganzen entgegen.
Diese auto_wert / auto_increment -Geschichte dient doch nur dazu einen unabhängigen Primärschlüssel für jeden Datensatz zu haben, der sich definitiv immer von allen anderen Datensätzen unterscheidet

wozu sollte man davon einen 2ten benötigen?
Erstens geht das auch mit CREATE TABLE (vielleicht nicht mit MySQL ...) und 2. kann es z.B. sinnvoll sein, einen Zähler global zu nutzen, also in mehreren Tabellen.

Code:
test=# create sequence global;
CREATE SEQUENCE               
Time: 24,415 ms               
test=*# create table t1 (id serial, g int default nextval('global'));
NOTICE:  CREATE TABLE will create implicit sequence "t1_id_seq" for serial column "t1.id"
CREATE TABLE
Time: 51,447 ms
test=*# create table t2 (id serial, g int default nextval('global'));
NOTICE:  CREATE TABLE will create implicit sequence "t2_id_seq" for serial column "t2.id"
CREATE TABLE
Time: 1,730 ms
test=*# insert into t1 values (default, default);
INSERT 0 1
Time: 0,403 ms
test=*# insert into t2 values (default, default);
INSERT 0 1
Time: 0,381 ms
test=*# insert into t1 values (default, default);
INSERT 0 1
Time: 0,283 ms
test=*# select * from t1;
 id | g
----+---
  1 | 1
  2 | 3
(2 rows)

Time: 0,342 ms
test=*# select * from t2;
 id | g
----+---
  1 | 2
(1 row)

Time: 0,261 ms
test=*# insert into t1 values (default, default);
INSERT 0 1
Time: 0,270 ms
test=*# select * from t1;
 id | g
----+---
  1 | 1
  2 | 3
  3 | 4
(3 rows)
Andreas
akretschmer ist offline   Mit Zitat antworten
Alt 27.01.2012, 09:08  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

hm Andreas - das ist jetzt das gefühlt 10te Mal, dass du eine "offensichtliche" MySQL-Frage (oder anderes DB-System) mit Postgres beantwortest ...
persönlich würde ich 2 Autowert / auto_increment Spalten als fehlerhaftes Design ansehen - zumal sich MS-Access hier nicht so freizügig gibt, wie postgres

obendrein wäre es spannend, ob dein postgres ein create table á la
Code:
create table test(
id serial,
feld2 serial);
bearbeiten kann .. denn beim Kenntnis-Stand des Fragers (siehe anderer Thread mit Antworten von Arne Drews) MUSS ich davon ausgehen, dass er genau sowas bauen wollte / würde
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 27.01.2012, 09:21  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von eagle275 Beitrag anzeigen
hm Andreas - das ist jetzt das gefühlt 10te Mal, dass du eine "offensichtliche" MySQL-Frage (oder anderes DB-System) mit Postgres beantwortest ...
persönlich würde ich 2 Autowert / auto_increment Spalten als fehlerhaftes Design ansehen
Warum?

Nur weil MySQL, Access oder whatever es nicht kann?

Zitat:
- zumal sich MS-Access hier nicht so freizügig gibt, wie postgres

obendrein wäre es spannend, ob dein postgres ein create table á la
Code:
create table test(
id serial,
feld2 serial);
bearbeiten kann .. denn beim Kenntnis-Stand des Fragers (siehe anderer Thread mit Antworten von Arne Drews) MUSS ich davon ausgehen, dass er genau sowas bauen wollte / würde
Code:
test=# create table test(id serial, feld2 serial);
NOTICE:  CREATE TABLE will create implicit sequence "test_id_seq" for serial column "test.id"
NOTICE:  CREATE TABLE will create implicit sequence "test_feld2_seq" for serial column "test.feld2"
CREATE TABLE
test=*# insert into test values (default, default);
INSERT 0 1
test=*# select * from test;
 id | feld2
----+-------
  1 |     1
(1 row)
Du kannst auch die Sequence so einstellen, daß sie in anderen Schrittweiten zählt (auch rückwärts) oder ein Limit setzen und definieren, was dann passiert:

Code:
test=# create table test(id serial, feld2 serial);
NOTICE:  CREATE TABLE will create implicit sequence "test_id_seq" for serial col                   umn "test.id"
NOTICE:  CREATE TABLE will create implicit sequence "test_feld2_seq" for serial                    column "test.feld2"
CREATE TABLE
test=*# alter sequence "test_feld2_seq" maxvalue 5 cycle restart;
ALTER SEQUENCE
test=*# insert into test values (default, default);
INSERT 0 1
test=*# insert into test values (default, default);
INSERT 0 1
test=*# insert into test values (default, default);
INSERT 0 1
test=*# insert into test values (default, default);
INSERT 0 1
test=*# insert into test values (default, default);
INSERT 0 1
test=*# insert into test values (default, default);
INSERT 0 1
test=*# insert into test values (default, default);
INSERT 0 1
test=*# select * from test;
 id | feld2
----+-------
  1 |     1
  2 |     2
  3 |     3
  4 |     4
  5 |     5
  6 |     1
  7 |     2
(7 rows)
Andreas
akretschmer ist offline   Mit Zitat antworten
Alt 27.01.2012, 09:30  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

schön was postgres so alles an eingeschränkt nützlichen Sachen kann - nur Access - und das verwendet der Thread-Ersteller kann es definitiv nicht
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 27.01.2012, 10:53  
Erfahrener Benutzer
 
Registriert seit: 18.01.2009
Beiträge: 128
PHP-Kenntnisse:
Fortgeschritten
CPCoder wird schon bald berühmt werden
Standard

Zitat:
Zitat von eagle275 Beitrag anzeigen
schön was postgres so alles an eingeschränkt nützlichen Sachen kann - nur Access - und das verwendet der Thread-Ersteller kann es definitiv nicht
Thread-Titel: 2mal Autowert in mysql Tabelle

Also nix Access sondern MySQL, aber auch hier stimmt die Aussage. MySQL unterstützt nur ein Feld pro Tabelle mit auto_increment.
CPCoder ist offline   Mit Zitat antworten
Alt 27.01.2012, 11:00  
Benutzer
 
Registriert seit: 01.11.2010
Beiträge: 96
PHP-Kenntnisse:
Anfänger
Internetdepp ist in Verruf geraten
Standard

Sorry...

hab gestern natürlich vergessen zu sagen, dass es sich um eine mysql-datenbank handelt....

der erste autowert ist der primärschlüssel...der zweite autowert für eine Verknüpfung sein zu einer anderen tabelle...

Upps da war ich zu langsam....grins

also es geht nicht...klare aussage....danke

Geändert von Internetdepp (27.01.2012 um 11:10 Uhr).
Internetdepp ist offline   Mit Zitat antworten
Alt 27.01.2012, 11:08  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Internetdepp Beitrag anzeigen
Sorry...

hab gestern natürlich vergessen zu sagen, dass es sich um eine mysql-datenbank handelt....

der erste autowert ist der primärschlüssel...der zweite autowert für eine Verknüpfung sein zu einer anderen tabelle...
Das macht so aber auch für mich nicht wirklich Sinn...


Andreas
akretschmer ist offline   Mit Zitat antworten
Alt 27.01.2012, 11:19  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

hehe ... nun bin ich wieder gegenteiliger Meinung .. das macht Sinn - nur nicht aus deinem Blickwinkel

folgendes grobes Tabellendesign solltest du nehmen:

tabelle 1 ->
ID , PrimärSchlüssel, Auto_increment
feld 2 = Fremdschlüssel , bezieht sich auf ID von Tabelle 2
....

tabelle2 ->
ID, Primärschlüssel, Auto_increment
...

so herum betrachtet, wird daraus ein passendes Paar Schuhe, sobald du die InnoDB-Engine benutzt, die Fremdschlüssel auf Datenbank-Ebene unterstützt.

Das Eintragen von Daten läuft dann natürlich in "umgekehrter" Reihenfolge

INSERT INTO tabelle2 (spalten) VALUES (daten)
x=last_insert_id()
INSERT INTO tabelle1 (feld2, weitere spalten) VALUES (x, weitere Daten)

mal so als Pseudocode
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Daten aus Tabelle 1 über Vergleich mit Tabelle 2 ziehen (MySQL) juice122 Datenbanken 12 28.05.2010 22:22
[Erledigt] MySQL Link Resource in einer statischen Variablen speichern Lenki PHP-Fortgeschrittene 8 18.03.2010 16:37
Mysql Übereinstimmung von Datensätzen innerhalb einer Tabelle prüfen MrVienna PHP Tipps 2010 13 28.01.2010 17:46
Bestehende php /Myqsl Tabelle Neben einander aus geben Totti-Totti PHP Tipps 2009 3 21.12.2009 11:00
[Erledigt] mySQL Tabelle existenz Prüfung hadro Datenbanken 6 26.11.2009 13:50
Bilder in Tabelle einfügen Mysql oder direkt?! DKuhn PHP Tipps 2009 3 30.09.2009 10:14
[Erledigt] MySQL, Daten in Tabelle einlesen, Struktur funktioniert nicht ganz MasterChief PHP Tipps 2008 3 13.10.2008 11:39
Daten aus Mysql Tabelle über Arrays in Variabeln schreiben Toby PHP Tipps 2008 8 22.08.2008 10:01
[Erledigt] Problem mit mySQL Datenbanken 7 27.09.2005 12:06
MYSQL - ASCII query in UTF8 Tabelle PHP Tipps 2005-2 1 14.09.2005 14:43
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
jede 2. Zeile aus MySQL Tabelle auslesen PHP Tipps 2004-2 4 09.11.2004 14:25
[Erledigt] tabelle in Mysql übertragen Datenbanken 0 05.08.2004 10:23
Maximal Wert in MYSQL Tabelle nach id rausfinden? PHP Tipps 2004 3 03.07.2004 23:27
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
autowert schteigerung, html autowert tabelle, autowert datenbank in internet, mysql in einer tabelle 2 auto_increment-spalten, auto wert tabelle

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:46 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum