我的项目有三个表,Media
,Program
和ProgramMedia
。
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)
Media
和Program
表已经有如下值:
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
表,因为它有一个主键。
我无法解决。感谢
答案 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