2017-07-25 113 views
-4

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

我想保留这两个项目,但主键不会允许我为同一个病人有多个记录。

我该怎么做?

+2

做一个'插入'而不是'更新'?如果您希望有人帮助您,您需要提供更多信息。 – Siyual

+0

是的,您可以,但您需要更改表格的主键定义。 –

+0

如上所述,最好总是显示一些代码以获得更好的帮助 – Adrian

回答

-2

如果您进行更新,结果会覆盖记录。你必须做一个插入而不是更新,但是如果你对主键有限制,你会得到一个异常。尝试删除此主键(或唯一键),如果可能的话。

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 

或只使用查表其中主要的表的主键引用(更好的解决方案的大部分时间)。

相关问题