我想在sql命令中设置两个表。
我有一个Customer
表和一个User Account
表。
Customer
没有或最多有1 User_account
(0 ... 1)的关系。
但USER_ACCOUNT
始终会有CUSTOMER
。
如何通过SQL命令执行此操作?
编辑以下是我到目前为止所尝试的内容:
ALTER TABLE UserAccount DROP CONSTRAINT FKUserAccountToCustomer
GO
DROP TABLE Customer;
DROP TABLE UserAccount;
GO
CREATE TABLE Customer
(
CustomerID INT NOT NULL IDENTITY,
(...)
);
GO
CREATE TABLE UserAccount
(
UserAccountID INT NOT NULL IDENTITY,
CustomerID INT NOT NULL,
(...)
);
GO
ALTER TABLE Customer ADD PRIMARY KEY (CustomerID);
GO
ALTER TABLE UserAccount ADD PRIMARY KEY(UserAccountID);
GO
IF NOT EXISTS (SELECT * FROM sysdiagrams WHERE name = 'FKUserAccountToCustomer')
BEGIN
ALTER TABLE UserAccount
ADD CONSTRAINT FKUserAccountToCustomer
FOREIGN KEY(CustomerID)
REFERENCES Customer(CustomerID)
END;
答案 0 :(得分:1)
如果客户可以拥有0或1个用户帐户,则将UserAccount Id设置为与客户ID相同,并使用主键和外键约束强制执行,如下所示:
CREATE TABLE Customer
(
CustomerId int not null identity(1,1)
constraint PK_Customer
primary key clustered
,(...)
)
CREATE TABLE UserAccount
(
UserAccountId int not null
constraint PK_UserAccount
primary key clustered
constraint FK_UserAccount__Customer
foreign key references Customer (CustomerId)
,(...)
)
这样:
答案 1 :(得分:0)
您可以为CustomerId
中的UserAccount
创建一个唯一约束,以确保客户不能拥有多个帐户。
应该像这样可行
ALTER TABLE UserAccount ADD CONSTRAINT IX_Customer UNIQUE(CustomerId)