SQL(访问) - 向复合主键添加新字段

时间:2009-08-02 12:43:52

标签: sql ms-access database-design

我有一个名为table1的表,它有一个使用'ScreenId'和'ActivityItemId'的复合主键。我添加了一个新字段'ProductId',它有一个NOT NULL约束。我想将ProductId添加到复合主键。

我认为这会起作用

db.execute“ALTER TABLE table1 PRIMARY KEY(ScreenId,ActivityItemId,ProductId)”

但是我收到错误,我认为这种语法仅在创建表时有效。

任何人都可以帮我解决SQL问题吗? (我不能在这里使用视觉基本解决方案顺便说一句,我实际上是使用ruby接口来运行sql,所以它只需要在SQL中)

感谢 最大

3 个答案:

答案 0 :(得分:6)

尝试删除当前主键,然后创建新主键:

ALTER TABLE table1 DROP CONSTRAINT pk_name

ALTER TABLE table1 ADD CONSTRAINT pk_name PRIMARY KEY(ScreenId,ActivityItemId,ProductId)

答案 1 :(得分:3)

考虑代理键而不是复合键。您不希望每次业务逻辑发生更改时都必须更改架构。

将这些关系保持为唯一约束并添加代理键可能是值得的。

答案 2 :(得分:-1)

您是否尝试使用设计视图而不是使用SQL更改主键?