Just nu i M3-nätverket
Jump to content

Villkor i ALTER TABLE


TicoRoman

Recommended Posts

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]

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...