在外键表中插入数据时,我需要帮助自动填充外键表中的主键值。例如:我创建了表:
create table Patient
(
PatientId int IDENTITY(1,1) primary key,
FirstName varchar(50),
SurName varchar(50),
Gender char(20),
)
这个Patient
表中有5行:
Say First Row值是:1, Priya, Kumari, Female
我创建了Guardians
表:
create table Guardians
(
GuardiansId int identity(1,1) primary key,
PatientId int foreign key references Patient(PatientId),
FirstName varchar(50),
SurName varchar(50),
Gender char(20),
RelationToPatient varchar(50),
)
在此表中,插入操作如下:
insert into Guardians(FirstName, SurName, Gender,RelationToPatient)values('Sumit','Kumar','Male','Wife')
选择显示NULL
值的Guardians表PatientId时:我的查询是在Guardians
PatientId
中插入值时应该自动填充来自Patient
表...
varchar
。例如:假设我想使用Guardians
这样的GRD0001', 'GRD0002', 'GRD0003'
表增加... 谢谢, S.D
答案 0 :(得分:1)
你的问题不是很明确 - 你究竟想做什么?
当您在Guardians
表中插入内容时,您是否希望自动将其插入Patients
表中?我不太关注。你能做一个完整的例子,也许??
如果您需要从Patient
表中捕获插入IDENTITY值,请执行以下操作:
DECLARE @NewPatientID INT
INSERT INTO dbo.Patient(fields) VALUES(.......)
SET @NewPatientID = SCOPE_IDENTITY()
INSERT INTO dbo.Guardians(PatientId, ......) VALUES(@NewPatientID, ......)
关于你的第二个问题:保持GuardiansId
IDENTITY原样(只有一个INT列可以是一个IDENTITY,你想保留它 - 相信我!)并在你的表中添加一个计算列: / p>
ALTER TABLE dbo.Guardians
ADD GuardianIDWithPrefix AS
'GDR' + RIGHT('0000' + CAST(GuardiansId AS VARCHAR(4)), 4) PERSISTED
由于它是 PERSISTED 字段,您甚至可以对其进行索引,并在各个方面像普通字段一样使用它。
这应该可以做到!