Avatar billede bundgaard Nybegynder
23. september 2004 - 12:38 Der er 14 kommentarer og
2 løsninger

Alter table

Hej

Jeg skal ha tilføjet en default værdi til en kolonne. Men databasen kører allerede og jeg vil helst ikke oprette den fra ny.

Er det muligt at tilføje den via Alter table funktionen? Vi har prøvet at gøre det via enterprise manageren.. men det virker ikke :/
Avatar billede fsconsult.dk Nybegynder
23. september 2004 - 12:50 #1
prøv med:

alter table mytable
  alter column mycolumn varchar(10) default 'test';
Avatar billede bundgaard Nybegynder
23. september 2004 - 12:55 #2
Server: Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'default'.
Avatar billede veronica Nybegynder
23. september 2004 - 13:09 #3
Hej igen,
Du er nødt til at lave en ny kolonne med din default-constraint, som du så må kopiere data over i.

Hvis fx kolonnen id i tabellen test skal have default værdien 1:

alter table test
add id1 int NOT NULL constraint df_id DEFAULT 1

update test
set id1=1
where id is null

update test
set id1=id
where id is not null

alter table test
drop column id
Avatar billede veronica Nybegynder
23. september 2004 - 13:09 #4
sorry det var vidst et forsøg på et svar
Avatar billede fsconsult.dk Nybegynder
23. september 2004 - 13:10 #5
hmm... der var vist noget med at default kun kan angives ved create af table, men der er stored procs til at oprette/slette defaults.

jeg har dog ingen problemer med at tilføje/slette defaults i enterprise manager
Avatar billede bundgaard Nybegynder
23. september 2004 - 13:14 #6
veronica > det forstod jeg ikke ret meget af :D

fsconsult.dk > jeg fandt den her:
ALTER TABLE Elev ADD CONSTRAINT Mellemnavn DEFAULT '-' FOR Mellemnavn

Men det virker ikke.. selvom den siger "Commands completed succesfully"
Avatar billede bundgaard Nybegynder
23. september 2004 - 13:18 #7
fsconsult.dk > jeg kan godt tilføje en default værdi.. men det virker bare ikke :/
Avatar billede fsconsult.dk Nybegynder
23. september 2004 - 13:19 #8
bundgaard> prøv at kigge i Enterprise manager om der er kommet default på feltet.

du skal dog være opmærksom på at default kun bliver brugt ved manglende/null værdi af Mellemnavn, og ikke ved et blank mellemnavn!
Avatar billede bundgaard Nybegynder
23. september 2004 - 13:20 #9
fsconsult.dk

Hmm.. jeg får en værdi ind fra ASP og hvis der ikke bliver indtastet noget, er det vel en null værdi eller?
Avatar billede fsconsult.dk Nybegynder
23. september 2004 - 13:22 #10
bundgaard> det kan ligesåvel være en tom streng ...  tror du bliver nødt til at flytte default logikken til ASP. alternativt skal du lave en trigger som ændrer nulls OG blanke til din default værdi, men det er lidt overkill.
Avatar billede bundgaard Nybegynder
23. september 2004 - 13:30 #11
Hmm.. dvs der intet galt er i sql koden?
Avatar billede fsconsult.dk Nybegynder
23. september 2004 - 13:42 #12
nej, og ellers skal ASP koden sende null til databasen ved en tom streng, men så kan den ligesågodt sende din default værdi istedet.
Avatar billede bundgaard Nybegynder
23. september 2004 - 13:52 #13
fsconsult.dk

Så meget asp kan jeg ikke.. jeg sender bare hvad der bliver skrevet af brugeren
Avatar billede bundgaard Nybegynder
23. september 2004 - 22:20 #14
fsconsult > smid et svar..

så får du en bunke point :) fik rettet det.. lavede bare en test i asp, hvor den testede på om mellemnavn var = "".. og hvis den var det, skrev den en - ind :D
Avatar billede fsconsult.dk Nybegynder
24. september 2004 - 07:55 #15
ok  ;-)
Avatar billede bundgaard Nybegynder
24. september 2004 - 09:00 #16
Nupper halvdelen selv :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester