Hej alla! Jag har inget belägg för detta, men jag tror det är så att du måste skapa en ny kolumn med det nya namnet, flytta all data till den kolumnen och slutligen ta bort den gamla kolumnen. Jag har för mig att ALTER TABLE inte stödjer RENAME utan lösningen får bli som JohanD har svarat dig. Tack för svar! En annan variant kan ju vara att göra en annan fuling Hej!Byta namn på tabeller och fält med SQL
Jag håller på att göra ett progg som dynamiskt kan byta namn på tabeller och fält. Om jag tolkar hjälptexten i MSDN rätt så ska detta gå att göra mha ALTER TABLE. Tyvärr får jag inte det till att fungera, iaf inte om mad använder JET och databasen är access.
Det borde gå att skriva
ALTER TABLE MyTable RENAME COLUMN OldFieldName TO NewFieldName med det blir syntaxfel om man kör detta i access.
Är det så att Access inte stödjer detta eller är det helt enkelt så att jag har fel syntax? Någon som har några ideér?
Mycket tacksam för svar..Sv: Byta namn på tabeller och fält med SQL
/JohanSv: Byta namn på tabeller och fält med SQL
Om du bara vill ändra kolumnens namn vid en SELECT kan du ju lösa det genom att skriva
SELECT FieldName As NewFieldNameSv: Byta namn på tabeller och fält med SQL
Jag var också inne på denna teori att det helt enkelt inte stöds men om man läser denna artikel
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adoce31/html/ado30ref_94.asp
så stödjs det ju definitivt i Windows CE. Jag tycker det vore något märkligt om det inte stödjs i den "fulla" versionen. Det finns även artiklar som beskriver RENAME men de är relaterade till Foxpro så det är samma sak där.
Jag mottager tacksamt fler svar då jag inte gärna vill skriva extra kod (eller ännu värre, använda ADOX i VB.NET).Sv: Byta namn på tabeller och fält med SQL
dim db as dao.database
set db = opendatabase(...)
db.execute "SELECT Field1 As NewField1, ...., FieldN As NewFieldN INTO NewTable"
och sedan använder du DAOs objektmodell för att ta bort den gamla tabellen och döpa om den nya tabellen. Dock blir detta ruskigt jobbigt om du har relationer och så. Dessutom kommer väl alla queries att pajja!?
Hur kommer det sig att du behöver ändra tabellstrukturen dynamiskt? Det kanske finns någon annat sätt att attackera trublemet?
/S@lladSv: Byta namn på tabeller och fält med SQL
Vi håller på med ett större projekt där vi vill kunna "uppdatera" kundernas data till rätt version vid nya kompileringar av programmet. Då programmet är skrivet i VB.NET ville vi undvika att använda COM interop och ADOX utan bara ren och skär ANSI SQL.
Jag har fått svar från Microsoft och de bekräftar att stödet för RENAME inte finns då man använder JET-providern. Så det är helt enkelt som jag trodde att det inte fanns något stöd. De rekommender just COM interop mot antingen DAO eller ADOX.
Hursomhelt, vi löste det dock nyss ganska enkelt genom att köra tre SQL-anrop på raken:
ALTER TABLE MyTable ADD NewField CHAR(5)
UPDATE MyTable SET NewField = OldField
ALTER TABLE MyTable DROP COLUMN OldField
Relativt snyggt trots allt. Men ev index och relationer får man lägga till och ta bort "manuellt".
Tack för alla svar!