2

我需要帮助来在外键表中插入数据时自动填充外键表中的主键值。例如:我已创建的表:需要主键和外键的帮助

create table Patient 
(
PatientId int IDENTITY(1,1) primary key, 
FirstName varchar(50), 
SurName varchar(50), 
Gender char(20), 
) 

说5行是否有在该Patient表: 说第一个行值是: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') 

在选择监护人表PatientId表示NULL值:我的查询是而在GuardiansPatientId插入值应自动填充的其中将来自Patient表...

  • 我第二个问题是:如何创建标识列为varchar。例如:假设我要增加我Guardians表“GRD0001', 'GRD0002', 'GRD0003'这样的...
  • 感谢, S.D

    +0

    Nitpick ...你有多少性别?女性为'0'而男性为'1'就足够了? – Damon 2010-02-07 09:09:31

    +0

    @Buckwad:嘿,有些人不喜欢被剽窃。 – 2010-04-23 18:48:22

    回答

    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身份是(仅一个INT列可以是一个IDENTITY你要保留 - 相信我),并计算列添加到您的表:

    ALTER TABLE dbo.Guardians 
        ADD GuardianIDWithPrefix AS 
        'GDR' + RIGHT('0000' + CAST(GuardiansId AS VARCHAR(4)), 4) PERSISTED 
    

    因为它是一个坚持领域,你甚至可以在它的索引,并用它像一个正常的网络连接!在各个方面都是这样。

    这应该做的伎俩!