记录数据库中的更新

时间:2017-07-25 13:58:34

标签: sql sql-server-2012

我正在更新数据库中的患者记录,但是当我更新它时,它会覆盖原始记录。

我想保留两个条目,但主键不允许我为同一个患者提供多个记录。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以使用复合主键,请看下面的示例:

create table table1 
(
    ID int not null, 
    Number int not null, 
    Name nvarchar(30), 
    Note nvarchar(30), 
    DateCreated datetime
)
go

alter table table1 add constraint PK_table1 primary key (ID, Number)
go

insert into table1 
values(1, 1, 'John', null, getdate()),
    (2, 1, 'Maria', null, getdate()),
    (3, 1, 'Simon', null, getdate()),
    (4, 1, 'Alex', null, getdate())
go

select * from table1

-- insert
insert into table1 
values (1, 2, 'John', 'changed address', getdate())
go

select * from table1

-- drop table table1

或者只使用引用主表主键的查找表(大部分时间都是更好的解决方案)。

答案 1 :(得分:-2)

如果进行更新,结果将覆盖记录。您必须执行插入而不是更新,但如果您对主键有限制,则会出现异常。如果可能,请尝试删除此主键(或唯一键)。