sql >> Databáze >  >> RDS >> Sqlserver

SQL Server:Nelze vytvořit vztah

Primární klíč v tabulce Osoba je pravděpodobně identita. Toto je automaticky se zvyšující celočíselné pole.

Musíte vytvořit cizí klíč v tabulce adres typu int, nikoli identity. Bude obsahovat celá čísla, která odpovídají záznamům osob, ale nechcete, aby se cizí klíč automaticky zvyšoval. Pro každý záznam v podřízené tabulce (adrese) nastavíte konkrétní hodnotu cizího klíče označující, ke kterému nadřazenému záznamu (osobě) patří.

Příklad:

INSERT person (firstname, lastname) VALUES ('John', 'Smith')

Tím se vloží nový záznam osoby a pole personid bude vyplněno automaticky, protože se jedná o pole IDENTITY.

Nyní, abyste mohli vložit adresu od Johna Smitha, musíte znát jeho personid . Například:

-- Say, for example, personid of John Smith is 55
INSERT address (personid, street, city) VALUES (55, 'High Street', 'London')

Tedy v person personid je generován automaticky, ale v address tabulky zadáte hodnotu, která odpovídá existující osobě. To je celý smysl cizího klíče.

Bez dalších informací o vašem schématu je těžké uhodnout problém.



  1. Proč SELECT ... WHERE id =a vrátí výsledek, pokud je hodnota 0

  2. MySQL - konkrétní sloupce při spojení?

  3. Nastavte a ověřte verzi SSL/TLS používanou v připojení Python MySQL

  4. Problém s časovým limitem připojení MySQL – aplikace Grails na Tomcat pomocí Hibernate a ORM