Avatar billede jytte Nybegynder
02. september 2004 - 08:47 Der er 4 kommentarer og
1 løsning

brug af alter

Jeg har en tabel lavet på følgende måde

create table test(
    test_id int,
    value int,
    primary key(test_id)
)

kan jeg tilføje et felt og ændre til sammensat nøgle på følgende måde:

ALTER TABLE test ADD
    versionsnr int NOT NULL default 1
    CONSTRAINT versionsnr PRIMARY KEY

Således at effekten bliver det samme som hvis jeg startede med

create table test(
    test_id int,
    value int,
    versionsnummer int,
    primary key(test_id,versionsnummer)
)

? eller kan jeg kun ændre til sammensat nøgle ved at gå ind i MS SQL ´s designmode ?
Avatar billede veronica Nybegynder
02. september 2004 - 09:18 #1
Jeg tror du er nødt til at gøre det i flere statements:

ALTER TABLE test
DROP CONSTRAINT <navnet på din nuværende primarykey>
GO

ALTER TABLE test ADD
    versionsnr int NOT NULL default 1
GO

ALTER TABLE test ADD
CONSTRAINT PK_versionsnr PRIMARY KEY (test_id, versionsnr)
GO

hvor PK_versionsnr er navnet på din sammensatte primary key..


Mht. <navnet på din nuværende primarykey> så genereres der et system-id når du ikke angiver navnet (som i din første sql statement). Du kan finde navnene på dine primary keys således:

SELECT distinct
cons.constraint_name, cons.table_name, us.column_name as primarykey
FROM sysobjects, INFORMATION_SCHEMA.TABLE_CONSTRAINTS cons, INFORMATION_SCHEMA.KEY_COLUMN_USAGE us
WHERE cons.constraint_type='PRIMARY KEY'
AND cons.constraint_name = us.constraint_name

mvh. Veronica
Avatar billede veronica Nybegynder
02. september 2004 - 09:18 #2
skulle have været et svar ...
Avatar billede jytte Nybegynder
02. september 2004 - 09:34 #3
Det tror jeg jeg kan bruge -- Tak for det.

Er GO iøvrigt ikke det samme om at skrive ; ?
Avatar billede veronica Nybegynder
02. september 2004 - 13:33 #4
Hej og tak :-)

Jo, men ; er Oracle syntax hvor GO er SQL Server syntax.
Avatar billede jytte Nybegynder
02. september 2004 - 15:37 #5
I så fald er MS SQL flink ved mig, for hidtil har jeg kun brugt ; og aldrig GO. Man lærer så længe man lever :-)
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