如何使用T-SQL将其他表中的重复数据插入主键列?

时间:2015-09-03 03:40:27

标签: csv sql-server-2008-r2

我的项目有三个表,MediaProgramProgramMedia

Media表:

MediaId (PK, int, not null), Name (varchar(100), not null)

Program表:

ProgramId (PK, int, not null), Topic (varchar(100), null), 
MediaList (varchar(200), not null)

ProgramMedia表:

ProgramId (PK, FK, int, not null), MediaId (PK, FK, int, not null)

MediaProgram表已经有如下值:

Media

(11, 'GoodNews'), 
(22, 'UniversalTV'), 
(33, 'Master')

Program

(1, 'Goverment', '11, 33'),
(2, 'Education', '22, 33')

我想将MediaList列拆分为ProgramMedia表。所以显示器将是这样的:

ProgramMedia

(1, 11), (1, 33), (2, 22), (2, 33)

MediaList列将被删除。

我试图拆分列,但我的问题是它无法插入ProgramMedia表,因为它有一个主键。

我无法解决。感谢

1 个答案:

答案 0 :(得分:0)

主键必须是唯一的。您的PK在ProgramId上,并且您想要将值1插入ProgramId两次,将值2插入两次。

如果ProgramId + MediaId是唯一的,您可以将主键变为:

ALTER TABLE ProgramMedia 
ADD CONSTRAINT PK_ProgramMedia 
PRIMARY KEY CLUSTERED (ProgramId, MediaId);

您还可以添加标识列并将其用作PK:

ALTER TABLE tt Add [id] int identity(0, 1) PRIMARY KEY CLUSTERED