Sql server 如何在具有外键的表中插入数据
我有一张叫做“顾客和信用卡”的桌子。我正在尝试将数据插入到customers表中。我弄不清楚如何将数据插入客户,它抛出了一个错误 提供的值的列名或数目与表定义不匹配Sql server 如何在具有外键的表中插入数据,sql-server,Sql Server,我有一张叫做“顾客和信用卡”的桌子。我正在尝试将数据插入到customers表中。我弄不清楚如何将数据插入客户,它抛出了一个错误 提供的值的列名或数目与表定义不匹配 信用卡表格 CREATE TABLE CreditCards ( CreditCardID INT IDENTITY(1,1) PRIMARY KEY, FirstName NVARCHAR(40) NOT NULL, MiddleName NVARCHAR(40), LastName NVARCHA
信用卡
表格
CREATE TABLE CreditCards
(
CreditCardID INT IDENTITY(1,1) PRIMARY KEY,
FirstName NVARCHAR(40) NOT NULL,
MiddleName NVARCHAR(40),
LastName NVARCHAR(40) NOT NULL,
Brand NVARCHAR(40) NOT NULL,
Bank NVARCHAR(40) NOT NULL,
[Number] INT UNIQUE NOT NULL,
DateofExpiration DATETIME NOT NULL,
VerificationCode INT NOT NULL
);
客户
表格:
CREATE TABLE Customers
(
CustomerID INT IDENTITY(1,1) PRIMARY KEY,
FirstName NVARCHAR(40) NOT NULL,
MiddleName NVARCHAR(40),
LastName NVARCHAR(40) NOT NULL,
StreetAddress NVARCHAR(100) NOT NULL,
[State] NVARCHAR(40) NOT NULL,
Country NVARCHAR(40) NOT NULL,
CellPhoneNumber NVARCHAR(40),
EmailAddress NVARCHAR(120),
CreditCardID INT FOREIGN KEY REFERENCES CreditCards(CreditCardID)
);
我正试图使用此语句将数据插入到customer表中
INSERT INTO Customers
VALUES ('John', 'ba', 'Dock', '515 East Halliday Street', 'Idaho', 'United States of America', '2082203814', 'docjon@ss.org');
此错误与外键无关
Customers
表有10列,但在INSERT
语句中只有8个值。您缺少CustomerID
和CreditCardID
值
您应该在INSERT
语句中明确列出要填写的列:
INSERT INTO Customers (FirstName, MiddleName, LastNamr, StreetAddress, [State] , Country, CellPhoneNumber, EmailAddress)
VALUES('John','ba','Dock','515 East Halliday Street','Idaho','United State of America','2082203814','docjon@ss.org');
省略的列将获得其默认值CustomerID
将使用IDENTITY
功能自动填写,CreditCardID
将NULL
。如果要使用刚刚插入信用卡
表的行的信用卡ID
,可以使用@@IDENTITY
变量:
NSERT INTO Customers (FirstName, MiddleName, LastNamr, StreetAddress, [State] , Country, CellPhoneNumber, EmailAddress, CreditCardID)
VALUES('John','ba','Dock','515 East Halliday Street','Idaho','United State of America','2082203814','docjon@ss.org', @@IDENTITY);
即使在提供所有列的情况下,这也是一个好主意,因为您不会使语句依赖于表创建中列的顺序。它还使代码更容易理解,因为读者不必再参考表规范来了解每个值是什么
顺便说一句,您的一个列名中有一个输入错误:
LastNamr
应该是LastName
这看起来像MS Sql Server,而不是MySQL。您在INSERT
语句中缺少CustomerID
值。如果希望使用IDENTITY
功能自动填写,请使用NULL
。它们似乎也缺少CreditCardID的值。信用卡的到期日期是一个日期,不是日期时间。谢谢你的帮助。我需要做什么来插入信用卡ID的数据使用@@IDENTITY
来获取最近一次插入到该表中的ID。顺便说一句,如果你在美国,将CVV代码保存在数据库中违反PCI法规。