1

我正在尝试建立一个将持有/维护一组用户权限的数据库。我也在使用 Microsoft SQL Server Management Studio。

我制作了一个帐户表,PK= UserId。

我用 PK=ProfileId 创建了一个 Profiles 表

我使用以下 SQL 语句创建了一个 UserPrivileges 表

CREATE TABLE UserPermissions 
(
    UserId int REFERENCES Accounts (UserId),
    ProfileId int REFERENCES Profiles (ProfileId),
    PRIMARY KEY (UserId, ProfileId)
)

但是,当我从 UserPrivileges 表中执行 Select 查询时,即使我在前 2 个表中确实有一些条目,也没有返回任何内容。

根据我对外键的理解,它们的值取自引用的表。既然引用的表确实有条目,为什么没有输入到 UserPrivileges 表中?

4

2 回答 2

1

外键只是一个参考。如果并不意味着您不需要表中的条目。你需要他们!但这些条目也必须存在于相关表中。这是一个很好的解释:http ://www.w3schools.com/sql/sql_foreignkey.asp

于 2013-06-17T14:02:51.290 回答
1

首先,您没有创建 UserPrivileges 表。您创建了一个 UserPermissions 表。(如果我们相信你的代码。)

其次,在 UserPermissions 中没有输入任何行,因为您没有在 UserPermissions 中插入任何行。外键不会使行看起来像魔术一样。决定哪些行属于 UserPermissions,然后插入它们。

于 2013-06-17T14:06:34.167 回答