AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken MySQL - Default-Werte für ein SET definieren
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL - Default-Werte für ein SET definieren

Ein Thema von himitsu · begonnen am 2. Mai 2007 · letzter Beitrag vom 2. Mai 2007
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#1

MySQL - Default-Werte für ein SET definieren

  Alt 2. Mai 2007, 14:25
Datenbank: MySQL • Version: 4+ • Zugriff über: PHP / phpMyAdmin
Hab mal 'ne ganz einfach Frage, aber ich bekomm es einfach nicht hin.

Wie setze ich den Default-Wert in 'ner MySQL-Tabelle, oder genauer gesagt mehrere Werte.

Egal wie ich es jetzt schon versucht hab, ich bekomm immer 'ne Fehlermeldung "ungültiger Wert...".

SQL-Code:
CREATE TABLE `name` (
  `xyz` SET( 'a', 'b', 'c' ) NOT NULL DEFAULT ( 'a', 'b' ) ,
  ...
SQL-Code:
DEFAULT 'a', 'b' , // geht alles nich
DEFAULT 'a, b' ,
DEFAULT ( 'a', 'b' ) ,
...


is nich so wichtig, aber da es grad paßt
Ich glaub auch nicht daß es geht, aber falls doch:
Gibt es auch sowas wie die Bereiche in Delphi-Sets?

'a'..'c'
[add]
ach ja, ich hab auch schon einiges über phpMyAdmin versucht, aber das meckert och nur rum.
Also für eine bestehende Spalte den Standardweert nachzurüsten.
$2B or not $2B
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#2

Re: MySQL - Default-Werte für ein SET definieren

  Alt 2. Mai 2007, 14:41
Hi himitsu,

versuchs mal hiermit o. Gewähr

SQL-Code:
CREATE TABLE `name` (
`xyz` enum('x','y','z') NOT NULL default 'y')
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#3

Re: MySQL - Default-Werte für ein SET definieren

  Alt 2. Mai 2007, 14:43
sonst noch ein Tipp von mir:
schau dir phpBB an .. die haben es ja auch geschaft
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: MySQL - Default-Werte für ein SET definieren

  Alt 2. Mai 2007, 14:45
ENUM geht ... nur brauch ich halt ein SET.

Bei ENUM ist ja immer nur ein Wert definiert, weärend beim SET auch mehrere, oder keiner gesetzt sein können.

in Delphi
Delphi-Quellcode:
Type X = (a, b, c); // ENUM

X = a
oder
X = b

Type Y = SET of (a, b, c); // SET

Y = [a]
aber auch
Y = [a, b]
Zitat von gsh:
sonst noch ein Tipp von mir:
schau dir phpBB an .. die haben es ja auch geschaft
hab ja nur bei Google und in PHP/mySQL-Seiten/Foren gesucht, aber auf die Idee bin ich noch nicht gekommen ... werd daheim mal nachschauen.
$2B or not $2B
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#5

Re: MySQL - Default-Werte für ein SET definieren

  Alt 2. Mai 2007, 14:49
Dann jetzt mit Gewähr

SQL-Code:
CREATE TABLE `name` (
  `xyz` set('x','y','z') default 'y'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Uwe
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#6

Re: MySQL - Default-Werte für ein SET definieren

  Alt 2. Mai 2007, 14:53
Noch ein Nachtrag:

Bei mehreren Defaults

SQL-Code:
CREATE TABLE `name` (
  `xyz` set('x','y','z') default 'y,z'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Uwe
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#7

Re: MySQL - Default-Werte für ein SET definieren

  Alt 2. Mai 2007, 15:05
Ok hier noch ein Auszug aus der Hilfe bezüglich'a'..'z'
Zitat:
Der SET-Typ

Ein SET ist ein Zeichenketten-Objekt, das 0 oder mehr Werte haben kann, wovon jedes aus einer
Auflistung zulässiger Werte stammen muss, die bei der Tabellenerzeugung festgelegt wurden. SETSpaltenwerte,
die aus mehrfachen SET-Elementen bestehen, werden angegeben, indem die
Elemente durch Kommas (‘,’) getrennt werden. Daraus ergibt sich, dass SET-Elemente selbst keine
Kommas enthalten dürfen.
Eine Spalte beispielsweise, die als SET("eins", "zwei") NOT NULL festgelegt wurde, kann
folgende Werte haben:

""
"eins"
"zwei"
"eins,zwei"
MySQL-Sprachreferenz


Eine SET kann maximal 64 unterschiedliche Elemente besitzen.
MySQL speichert SET-Werte numerisch, wobei das niedrigste Bit in der Reihenfolge der
gespeicherten Werte dem ersten SET-Element entspricht. Wenn Sie einen SET-Wert in einem
numerischen Zusammenhang abrufen, hat der abgerufene Werte Bits gesetzt, die den SETElementen,
aus denen sich der Spaltenwert zusammensetzt, entspricht. Beispielsweise können Sie
numerische Werte aus einer SET-Spalte wie folgt abrufen:
mysql> SELECT set_spalte+0 FROM tabelle;
Wenn in einer SET-Spalte eine Zahl gespeichert wird, legen die Bits, die in der binären Darstellung
der Zahl gesetzt sind, die SET-Elemente im Spaltenwert fest. Angenommen, eine Spalte ist als
SET("a","b","c","d") festgelegt, dann haben die Elemente folgende Bitwerte:

SET Element Dezimalwert Binärwert
a 1 0001
b 2 0010
c 4 0100
d 8 1000

Wenn Sie dieser Spalte einen Wert von 9 zuweisen, ist das binär 1001. Daher werden der erste und
der vierte SET-Wert, die Elemente "a" und "d", ausgewählt, und der Ergebniswert ist "a,d".

Bei einem Wert, der mehr als ein SET-Element enthält, spielt es keine Rolle, in welcher
Reihenfolge die Elemente aufgelistet sind, wenn Sie den Wert einfügen. Es spielt ebenfalls keine
Rolle, wie oft ein gegebenes Element im Wert aufgelistet ist. Wenn der Wert später abgerufen wird,
erscheint jedes Element im Wert einmal, wobei die Elemente in der Reihenfolge erscheinen, in der
sie bei der Tabellenerzeugung festgelegt wurden. Wenn eine Spalte beispielsweise als
SET("a","b","c","d") festgelegt ist, erscheinen "a,d", "d,a" und "d,a,a,d,d" als
"a,d", wenn sie abgerufen werden.

SET-Werte werden numerisch sortiert. NULL-Werte werden vor Nicht-NULL-SET-Werten
einsortiert.

Normalerweise führt man SELECT auf eine SET-Spalte mit dem LIKE-Operator oder der
FIND_IN_SET()-Funktion aus:
mysql> SELECT * FROM tabelle WHERE set_spalte LIKE '%wert%';
mysql> SELECT * FROM tabelle WHERE FIND_IN_SET('wert',set_spalte)>0;

Aber auch folgendes funktioniert:
mysql> SELECT * FROM tabelle WHERE set_spalte = 'wert1,wert2';
mysql> SELECT * FROM tabelle WHERE set_spalte & 1;

Das erste dieser Statements sucht nach einer exakten Übereinstimmung, das zweite sucht Werte, die
das erste SET-Element enthalten.

Wenn Sie alle möglichen Werte einer SET-Spalte erhalten wollen, benutzen Sie: SHOW COLUMNS
FROM tabelle LIKE set_spalte und gehen die SET-Definition in der zweiten Spalte
durch.
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

Re: MySQL - Default-Werte für ein SET definieren

  Alt 2. Mai 2007, 15:15
hatte phpBB sogar noch auf'm Stick
und konnte in den .sql-Dateien keine Definitionen mit SET finden.

@uwewo:
Tja, mit einem Wert geht es, aber ich brauch halt Mehrere.

grad eben hatte es urplötzlich geklappt °_°
ALTER TABLE `name` CHANGE `xyz` `xyz` SET( 'x', 'y', 'z' ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT 'y,z' ich glaub ohne Leerzeichen gehts wohl.
(ich sollte mir mal zumindestens für PHP/MySQL die übersichtlichere Schreibweise abgewöhnen )

Hab es jetzt auch mehrmals an den "richtigen" Tabellen getestet und es geht °_°

> Also alles zusammen in ' und keine Leerzeichen und Klammern

[add]
PS: bin wohl och noch zu blöd die MySQL-Refferenz richtig zu lesen ... saß jetzt ja nur knapp 'ne Woche an diesem Problem


Also danke nochmal *allesumarm*


[add2]
sowas wie 'a'..'z' geht also wirklich nicht? ;(
$2B or not $2B
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#9

Re: MySQL - Default-Werte für ein SET definieren

  Alt 2. Mai 2007, 15:22
Zitat von himitsu:
@uwewo:
Tja, mit einem Wert geht es, aber ich brauch halt Mehrere.
Deshalb mein Nachtrag 1

Zitat von himitsu:
sowas wie 'a'..'z' geht also wirklich nicht?
Siehe meinen Nachtrag 2.
Leider Nein
Uwe
  Mit Zitat antworten Zitat
Antwort Antwort


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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz