この ERD でテーブル、属性、および主キーと外部キーを作成するには、SQL を記述する必要がありました: 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 外部キー 'fk_financial_transactions_financial_transactions' の参照列リストと一致する参照テーブル 'financial_transactions' に主キーまたは候補キーがありません。
メッセージ 1750、レベル 16、状態 0、行 87 制約を作成できませんでした。以前のエラーを参照してください。」
他のすべてのステートメントは正常に実行されます。
私は何を間違っていますか?
*元々このステートメントを CREATE TABLE: previous_transaction_id int NOT NULL で使用しましたが、同じエラーが発生し、検索時に NOT NULL を削除することで修正された同様の質問が見つかりました。