首页 > 解决方案 > 带有空外部表的 SQL INSERT INTO

问题描述

我有一个包含 3 个值的表和一个外部表。

Tbl_Person

ID    int PRIMARY KEY IDENTITY(1,1)
CarID int REFERENCES Tbl_Car(ID)
Name  nvarchar(20)

Tbl_Car

ID    int PRIMARY KEY IDENTITY(1,1)
Color nvarchar(30)

我现在想Person用一个新的Car而不关心Car表来创建一个新的,有点像这样:

INSERT INTO Tbl_Person (Car, Name) 
VALUES ('dont know what goes here', 'Timmy')

我不确定要在Car列中放什么,因为我只是希望它存在但还不关心它的值。

我确信它很容易在网上找到,但我不知道如何用谷歌搜索这个特殊问题。

标签: sqlsql-servertsql

解决方案


您可以更改逻辑模型以非规范化“CarID”(将其从“Persons”表中删除)并创建一个新表来存储名为“Person_Cars”的人的汽车。这样可以避免NULL在汽车未知时将值插入模型。根据应用的表约束,它还可以允许人拥有超过 1 辆车。此外,不需要在表前加上“tbl_”。此外,Persons 和 Cars 似乎都可能受益于对NVARCHAR列的唯一约束。

ID          int not null PRIMARY KEY IDENTITY(1,1)
Name        nvarchar(20) unique not null 

汽车

ID          int not null PRIMARY KEY IDENTITY(1,1)
Car         nvarchar(30) unique not null 

人_汽车

ID          int not null PRIMARY KEY IDENTITY(1,1)
PersonID    int not null REFERENCES Persons(ID)
CarID       int not null REFERENCES Cars(ID)

推荐阅读