正如標題所說,由于某種原因,當我什至沒有參考它時,它給了我一個錯誤,即運動變數不能參考另一列,這有什么原因嗎?
CREATE TABLE club_rates
(club_id NUMBER(4)
CONSTRAINT rates_club_fk REFERENCES club_subscriptiontypes(club_id,subscriptiontype)
,sport CHAR(6)
,subscriptiontype CHAR(11)
,subscription_startdate DATE
,subscription_rate_existing NUMBER(2)
,subscription_rate_new NUMBER(2)
,subscription_enddate DATE
,registration_startdate DATE
,registration_enddate DATE,
CONSTRAINT rates_clubsportsub_pk PRIMARY KEY (club_id, sport, subscriptiontype, subscription_startdate)
);
uj5u.com熱心網友回復:
假設你有一張桌子:
CREATE TABLE club_subscriptiontypes(
club_id NUMBER(4),
subscriptiontype CHAR(11),
PRIMARY KEY (club_id,subscriptiontype)
);
然后您不想針對單個列行內宣告復合主鍵列,否則您會收到錯誤:
ORA-02256: number of referencing columns must match referenced columns
相反,在陳述句的末尾將其宣告為 out-of-line:
CREATE TABLE club_rates(
club_id NUMBER(4)
, sport CHAR(6)
, subscriptiontype CHAR(11)
, subscription_startdate DATE
, subscription_rate_existing NUMBER(2)
, subscription_rate_new NUMBER(2)
, subscription_enddate DATE
, registration_startdate DATE
, registration_enddate DATE
, CONSTRAINT rates_club_fk
FOREIGN KEY (club_id, subscriptiontype)
REFERENCES club_subscriptiontypes(club_id,subscriptiontype)
, CONSTRAINT rates_clubsportsub_pk
PRIMARY KEY (club_id, sport, subscriptiontype, subscription_startdate)
);
順便說一句,您可能不想使用固定長度的CHAR字串,而是想要使用可變長度的VARCHAR2字串。
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/395807.html
