我必须编写 SQL 来在此 ERD 中创建表、属性以及主键和外键:http: //imgur.com/VYZbwr6
在 ERD 的“Financial_Transactions”表中,有一个名为“previous_transaction_id”的属性和另一个名为“transaction_id”的属性。在此表中,“previous_transaction_id”除了是一个属性外,还是该表的外键。它引用表中的最后一个“transaction_id”。
这是我的“financial_transactions”表的 SQL:
CREATE TABLE financial_transactions(
transaction_id int IDENTITY(1,1) NOT NULL,
account_id int NOT NULL,
item_rental_id int NOT NULL,
previous_transaction_id int,
transaction_type_code int NOT NULL,
transaction_date date NOT NULL,
transaction_amount money NOT NULL,
transaction_comment varchar(512) NOT NULL);
ALTER TABLE financial_transactions ADD CONSTRAINT pk_financial_transactions PRIMARY KEY (transaction_id);
ALTER TABLE financial_transactions ADD CONSTRAINT fk_financial_transactions_accounts FOREIGN KEY(account_id)
REFERENCES accounts (account_id);
ALTER TABLE financial_transactions ADD CONSTRAINT fk_financial_transactions_customer_rentals FOREIGN KEY(item_rental_id)
REFERENCES customer_rentals (item_rental_id);
ALTER TABLE financial_transactions ADD CONSTRAINT fk_financial_transactions_financial_transactions FOREIGN KEY(previous_transaction_id)
REFERENCES financial_transactions (previous_transaction_id);
ALTER TABLE financial_transactions ADD CONSTRAINT fk_financial_transactions_transaction_types FOREIGN KEY(transaction_type_code)
REFERENCES transaction_types (transaction_type_code);
当我运行我的 SQL(包括脚本中每个表的语句)时,我收到以下错误:
“消息 1776,级别 16,状态 0,第 87 行在引用表 'financial_transactions' 中没有与外键 'fk_financial_transactions_financial_transactions' 中的引用列列表匹配的主键或候选键。
消息 1750,级别 16,状态 0,第 87 行无法创建约束。查看以前的错误。”
所有其他语句正常执行。
我究竟做错了什么?
*我最初在 CREATE TABLE 下使用了此语句:previous_transaction_id int NOT NULL,但是,它导致了相同的错误,并且在搜索时我看到了一个类似的问题,该问题已通过删除 NOT NULL 得到修复。