gpt4 book ai didi

sql - 如何使表的属性成为该表中的外键?

转载 作者:搜寻专家 更新时间:2023-10-30 20:41:57 24 4
gpt4 key购买 nike

我必须编写 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 得到解决。

最佳答案

这里

ALTER TABLE financial_transactions ADD  CONSTRAINT 
fk_financial_transactions_financial_transactions
FOREIGN KEY(previous_transaction_id)
REFERENCES financial_transactions (previous_transaction_id);

您有一个引用自身的列。这是您的意图还是您想要引用 transaction_id?

关于sql - 如何使表的属性成为该表中的外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15800022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com