Avatar billede trylmand Nybegynder
26. oktober 1999 - 02:23 Der er 9 kommentarer og
1 løsning

DEFAULT CONSTRAINT

Sql 7.0 server

[Microsoft][ODBC SQL Server Driver][SQL Server]ALTER TABLE DROP COLUMN z4 failed because DEFAULT CONSTRAINT DF__ArtEmneBranc__z4__3508D0F3 accesses this column.

Den anfægter alt så jeg ikke kan droppe kolonner i Query Analyzer og ejheller fra ASP sider. Den går på tværs af tabeller og databaser.

Hvad ind i H. er det ?
Kam ikke finde noget om D.C. i books online.
Hvordan fjerner jeg lortet ?
Avatar billede blackthorne Nybegynder
26. oktober 1999 - 09:43 #1
Prøv at droppe default constrainten først med
DROP DEFAULT DF__ArtEmneBranc__z4__3508D0F3. hvis det ikke virker så genere et script over tabellen, så kan jeg måske løse problemmet for dig.

Jeg går ud fra at det er MSSQL 7.0 du bruger siden du vil droppe en kolonne
Avatar billede trylmand Nybegynder
26. oktober 1999 - 10:41 #2
No can do.
Problemet optræder i alle kolonner i alle tabeller.
Default Constraint navnet kendes ikke før fejlmeddelelsen.
Avatar billede blackthorne Nybegynder
26. oktober 1999 - 10:55 #3
har du nogen rules med default constrains på kolonnen eller default constains på feltet i tabelen.

forresten er dette en fejl eller skriver du ALTER TABLE DROP COLUMN uden at angive hvilken table du vil droppe fra
Avatar billede lrj Nybegynder
26. oktober 1999 - 11:50 #4
I Enterprise Manager til SQL 7 kan du generere et script til at oprette/nedlægge data og strukturer. Det er langt den nemmeste metode.
Avatar billede trylmand Nybegynder
26. oktober 1999 - 12:56 #5
Jeg anvender Db.dbo.tabel i ALTER statement.
Scriptet kan ikke genereres i enterprise manager, da det skal foregå dynamisk over intranet.
Fejlen optræder så snart jeg angiver en default værdi til en kolonne, fejlen er ikke begrænset til en db men er globalt.
Avatar billede blackthorne Nybegynder
26. oktober 1999 - 13:09 #6
Dit problem er du ikke kender navnet på default constainten, når du skal droppe kolonnen. du kan selv angive navn på default constainten når du opretter tabellen, og vil derfor kende navnet når du dropper kolonne. se følgende:

CREATE TABLE MyTable
ADD AddDate smalldatetime NULL
CONSTRAINT AddDateDflt
DEFAULT getdate() WITH VALUES

Når du så vil droppe kolonnen adddate skal default constainen adddatedflt droppes først derefter columnen

f.eks.
ALTER TABLE myTable DROP CONSTAINT addDatedflt
go
ALTER TABLE myTable DROP COLUMN AddDate

Hvis dette ikke hjælper som har jeg måske en anden mulighed.

forresten er dette ikke en fejl der er designet sådanne. udtræk fra alter table hjælpen

A column cannot be dropped if it is:
A replicated column.
Used in an index.
Used in a CHECK, FOREIGN KEY, UNIQUE, or PRIMARY KEY constraint.
Associated with a default defined with the DEFAULT keyword, or bound to a default object.
Bound to a rule.

Avatar billede trylmand Nybegynder
26. oktober 1999 - 13:29 #7
Din løsning fungerer udmærket lokalt på den individuelle kolonne så du appellererr kraftigt til de 300 p, men problemet er der stadig i de eksisterende tabeller på det globale plan.

Kan det have noget med baglæns comp. til 6.5 at gøre ?
Og hvor fjerner jeg den comp ?

Mht. Replikations drop constraint osv. er ikke et problem, da det drejer sig om lokale intermidiate tabeller der sætter webmaster istand til at skabe crossreffs mellem to væsensforskellige indextabeller.
Avatar billede blackthorne Nybegynder
26. oktober 1999 - 14:06 #8
Du kan sætte baglæns comp med denne stored procedure
sp_dbcmptlevel Databasename, 60 eller 65 eller 70 afhængig af hvilken compabilitet du vil have se evt i online hjælpen omkring denne stored procedure.

HINT man kan kun droppe columns når baglæns comp er 70. fordi det kun er MSSQL 7.0 der tillader denne funktion

Hvad mener du med at problemmet er der standigvæk på det globale plan???. Ja problemmet eksistere standigvæk hvis du ikke kender navnet på default constaints'ene, SQL Server finder selv på navn til default constaints hvis du ikke selv navngiver dem

er lokale intermidiate tabeller = Temporær tabeller??
Avatar billede trylmand Nybegynder
26. oktober 1999 - 14:19 #9
Indtil i aftes kunne jeg droppe kolonner uden problemer både fra Query Analyzer og Asp, så puf !!
Selv ikke en Serverdansen hjalp.

Vedr. intemidiate tabeller så har jeg en artikeltabel med en emnetabel og en leverandørtabel med en branchetabel. Når en artikel vælges skal emne referere dels leverandørbrancher.
Denne reference er ikke statisk men afhængig af modeluner og aktualitet, hvorfor jeg har været nødt til at lave en kobling med en dynamisk tabel, der genererer data og skriver dem videre.

Tak for hjælpen.
Avatar billede blackthorne Nybegynder
26. oktober 1999 - 14:22 #10
Det var så lidt, jeg håber at det løste problemet.
Det vil have bedre at SQL 70 selv kunne slette eventuelle default constrains på tabeller, ved hjælp af en extra parameter. For man kender sgu ikke altid navnene på constrains'erne
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