好的,所以我正在设置一个新的小型数据库。将所有内容放置在白板上后,我开始在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');
答案 0 :(得分:-1)
我希望您稍后将通过更新表来填充FK值。因为,RDBMS不会自动为您填充FK值。
创建表,将FK的默认值设置为NULL,如下所示。
CREATE TABLE CONSOLE(
consoleID int IDENTITY(1,1) NOT NULL PRIMARY KEY,
consoleName VARCHAR(25) NOT NULL,
userID int FOREIGN KEY REFERENCES USER(userID) DEFAULT NULL
);
当您插入表中时,请指定列名。现在,PK将是自动递增的值,而FK将是NULL。
INSERT INTO CONSOLE(ConsoleName)
VALUES ('Xbox');
编辑
我从评论中看到您要自动填充PK和FK。无法自动填充FK。您可以通过两种方式做到这一点:
DECLARE @rightUserId INT; -- Find value for this
INSERT INTO CONSOLE(ConsoleName, UserId)
VALUES ('Xbox',@rightUserId);