Just nu i M3-nätverket
Gå till innehåll

Villkor i ALTER TABLE


TicoRoman

Rekommendera Poster

Går det att använda villkor i ALTER TABLE? Gäller mySQL 4.0.14.

 

Det framgår inte direkt i dokumentationen på http://dev.mysql.com/doc/mysql/en/ALTER_TABLE.html men det verkar konstigt om det inte går, eller?

 

Det jag vill göra är att ta bort en kolumn om kolumnens värden (för samtliga poster/rader förstås) uppfyller ett visst villkor [är 0] (dvs köra en count()). Jag hittar dock inte att det (=villkor/where) stöds [i ALTER TABLE].

 

Tillägg:

Jag har tittat på CASE och IF men jag lyckas inte använda ett "SQL-uttryck" i dessa.

 

http://dev.mysql.com/doc/mysql/en/Control_flow_functions.html

 

 

Tillägg 2:

Det närmaste jag kommit är:

[color="#0000ff"]SELECT[/color] CASE ([color="#0000ff"]SELECT[/color] [color="#0000ff"]COUNT[/color](*) [color="#0000ff"]FROM[/color] Products [color="#0000ff"]WHERE[/color] Artist != [color="#ff0000"]'[/color]0[color="#ff0000"]'[/color]) # Antal rader som inte är 0
WHEN 0 # När det ej finns rader som inte är 0
THEN (ALTER TABLE Products [color="#0000ff"]DROP[/color] Artist)

ELSE [color="#ff0000"]'[/color]Fel - operationen misslyckades.[color="#ff0000"]'[/color]

END;

 

Fel:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALTER TABLE Products DROP Artist ) ELSE 'Fel - operationen mis

 

Det som är felet är att SQL-satsen måste returnera en kolumn (vilket ALTER TABLE) inte gör. Någon som vet hur man kommer förbi detta?

 

_________

TicoRoman - Anfall är bästa försvar

[inlägget ändrat 2004-11-12 13:08:05 av TicoRoman]

Länk till kommentar
Dela på andra webbplatser

Jag är nästan helt övertygad om att du inte kan göra det du vill. Du hade kunnat lösa det med en Stored Procedure. Men MySQL stödjer inte det förrän i senaste versionen.

 

Länk till kommentar
Dela på andra webbplatser

Ja, det verkar som om jag får ge upp tanken. Stored Procedures stöds tyvärr inte förrän version 5 (som iofs finns i Alpha-version, men inte är till nytta i detta läge).

 

_________

TicoRoman - Anfall är bästa försvar

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...