Gå til innhold

Anbefalte innlegg

Skrevet

Jeg har en database som jeg skal porte til MSSQL, i et hjørne har den to tableller som viser til hverandre, altså:

 

Create table lab(

id integer primary key,

manager integeger null references contact[id];

...);

 

Create table contactperson(

id integer primary key,

departmentid integer references department[id];

...);

 

Med andre ord, for hver lab har jeg en rekke kontaktpersoner, en av disse kontaktpersonene er lederen for avdelingen, jeg må først legge inn lab og så kan jeg legge inn kontaktpersoner og definere lederen for laben. Dette har jeg hatt inne i diverse databaser (postgres, sybase og access) og det har fungert fint, men i mssql går det ikke, for å få lagt inn en lab må jeg ha definert en kontakt, for å få definert en kontakt må jeg ha lagt inn en lab...

 

Det er jo i og for seg riktig at null!=null, så man kan sånn sett si at modellen min er tvilsom, men jeg regner med at det er noe magi som skulle få det til å funke... (Databasen i MSSql er definert ved å eksportere fra access, så jeg har ikke det nøyaktige scriptet som ble kjørt for å definere det.

 

M.

Videoannonse
Annonse
Skrevet (endret)

Det du skisserer går helt fint i MSSQL:

 

use tempdb;
go

create table contact (
 contact_id integer identity,
 contact_name varchar(60),  
 constraint pkContact primary key (contact_id)
);
go

create table lab (
 lab_id integer identity,
 lab_name varchar(60),
 lab_manager int,
 constraint pkLab primary key (lab_id),
 constraint fkLabContact foreign key (lab_manager) references contact(contact_id)
);
go

declare
 @contact_id int,
 @lab_id int;

insert into lab values ('Test Lab',null)
set @lab_id = @@identity;

insert into contact values ('Test Contact')
set @contact_id = @@identity;

update lab set lab_manager = @contact_id where lab_id = @lab_id;

select * from lab; go

Endret av roac
Skrevet

Takk,

 

Da må det være 'oppgraderingen' fra access som har laget noe krøll, får bare definere databasen på nytt på 'skikkelig' vis...

 

M.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...