05. juli 2004 - 13:08Der er
4 kommentarer og 1 løsning
INSERT kommando
Jeg har lavet en kopi af en del af min database med flg. kommando: SELECT * INTO db-ptjkopi FROM db-ptj WHERE DB2TSMP <'1 jan 2003 0:00'
dette laver et nyt register db-ptjkopi og kopierer data ældre end 1. jan 2003 over i det.
Nu vil jeg gerne appende flere data til db-ptjkopi registeret, og benytter flg. kommando.
INSERT db-ptjkopi SELECT * FROM db-ptj WHERE DB2TSMP >'1 mar 2003 0:00
Jeg får fejl fejl:
Server: Msg 8101, Level 16, State 1, Line 1 An explicit value for the identity column in table 'db-ptjkopi' can only be specified when a column is used and IDENTITY_INSERT is ON.
Når jeg sætte IDENTITY_INSERT ON på registeret db-ptjkopi, får jeg samme fejl.
Kan man ikke lave følgende: select * into db_ptjkopi from ( SELECT * FROM db-ptj WHERE DB2TSMP <'1 jan 2003 0:00' UNION SELECT * FROM db-ptj WHERE DB2TSMP >'1 mar 2003 0:00 )
Jo - men kun hvis db_ptjkopi ikke findes i forvejen.
Faktisk får du blot en rå tabel uden identity, defaults, constraints etc. Den vil også tillade NULL (på enten alle kolonner eller de kolonner der indeholder NULL værdier - kan ikke helt huske).
Men u bør anvende UNION ALL fremfor UNION når du ved at der ikke kan være dubletter i dine rækker. UNION har en implicit sortering for at fjerne dubletter som er ressourcekrævende - den sparer du ved en UNION ALL.
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.