【发布时间】:2018-12-30 11:23:52
【问题描述】:
好的,所以我正在尝试设置一个新的小型数据库。在白板上全部列出之后,我开始在 SQL Server 中创建它。我已经使用相关的 PK 和 FK 创建了所有表。但是,当我将数据插入这些表时,我希望我的 PK 和 FK 自动填充我认为我在创建表期间设置的。例如,假设我有 3 列,一列是 PK,另一列是 FK。当我在此表中插入一条新记录时,我只想为非 PK/FK 的第三列名称指定信息,并让 PK 自动递增,并允许 FK 为空。
我使用的 CREATE 语句是:
CREATE TABLE CONSOLE
(
consoleID int IDENTITY(1,1) NOT NULL PRIMARY KEY,
consoleName VARCHAR(25) NOT NULL,
userID int FOREIGN KEY REFERENCES USER(userID)
);
所以当我去添加一条我想使用的记录时:
INSERT INTO CONSOLE
VALUES ('Xbox');
【问题讨论】:
-
如果要允许空值,外键约束的意义何在?
-
当您插入
Xbox时,数据库应该如何神奇地知道您指的是哪个用户?当然,您必须为外键提供一个值。 -
@P.Salmon 我想他想用 NULL 值填充,他稍后会更新它。
-
I would like my PKs and FKs to auto populate which I thought I had setup during table creation你能告诉我们你是怎么做到的吗? -
@P.Salmon "如果您要允许空值,外键约束的意义何在?" 需要这种情况来实现与 0 或 1 的关系记录。例如,您可以通过从一个人到其配偶的可空 FK 来代表一夫一妻制。但是,我完全支持在这种情况下
userID可以为空不太可能是有意的,这可能是您想说的。
标签: sql sql-server create-table insert-into