Přidání primárného klíče   otázka

Databáze

Dobrý den,

v SQL jsem totální amatér, nicméně odpověď jsem nikde nedohledal. Mám tři tabulky, u tabulky 1 a 2 jsem určil jako primární klíč sloupec id, u tabulky 3 jsem tyto sloupce použil jako cizí klíče u dvou ze tří sloupců. Tabulku jsem naplnil daty a do třetího sloupce, který není pomocí cizích klíčů nijak svázán s prvními dvěma tabulkami, doplnil potřebná data. Nyní jsem ho chtěl označit v SSMS označit jako primární klíč, ale nejde to a hází chybu, že změny, které jsem provedl, vyždaují změnu ještě někde jinde...

Dokázal by mi někdo vysvětlit, proč toto nemohu. Primární klíče ostatních tabulek závisejí na jiných sloupcích, než těch, které nastavuji a na tomto sloupci zatím také nic nezávisí, tak proč ho nemohu změnit na primary key? Díky za případné odpovědi

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mě napadá snad jen, že nemáte v té třetí tabulce nastaveno NOT NULL na tom sloupci, který chcete mít jako PRIMARY KEY.

create table tabulka1(id1 int primary key,data1 varchar(20))
GO
create table tabulka2(id2 int primary key,data2 varchar(20))
GO
create table tabulka3(id3 int,id1 int references tabulka1,id2 int references tabulka2)
GO
insert into tabulka1 values (100,'neco'),(200,'neco1'),(300,'neco2')
GO
insert into tabulka2 values (10,'neco3'),(20,'neco4'),(30,'neco5')
GO
insert into tabulka3 values (1,100,20),(2,300,10),(3,200,30)
GO 
alter table tabulka3 alter column id3 int not null
GO
alter table tabulka3 add primary key(id3)
GO

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Aha děkuji, předpokládal jsem, že když nastavím PRIMARY KEY, že je to automaticky not null. Zkusím večer doma a dám vědět.

Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback