我有两张桌子:
CREATE TABLE REP
(
PRIMARY KEY REP_NUM CHAR(2) DEFAULT ('00'),
LAST_NAME CHAR(15),
FIRST_NAME CHAR(15),
STREET CHAR(15),
CITY CHAR(15),
PROVINCE CHAR(3),
ZIP CHAR(5),
COMMISSION DECIMAL(7,2),
RATE DECIMAL(3,2)
);
和
CREATE TABLE CUSTOMER
(
CUSTOMER_NUM CHAR(3) PRIMARY KEY,
FOREIGN KEY (REP_NUM) REFERENCES REP ON DELETE SET DEFAULT,
CUSTOMER_NAME CHAR(35) NOT NULL,
STREET CHAR(15),
CITY CHAR(15),
PROVINCE CHAR(3),
ZIP CHAR(5),
BALANCE DECIMAL(8,2),
CREDIT_LIMIT DECIMAL(8,2),
REP_NUM CHAR(2)
);
如您所见,REP_NUM
列是REP
表中的主键和CUSTOMER
表中的外键。
例如,如果我在REP
表中输入值为REP_NUM
为35的新值,并使用CUSTOMER
向REP_NUM
表中插入新值是35,然后我从REP
表中删除它:
DELETE FROM REP WHERE REP_NUM = '35';
我希望REP_NUM
表(外键)中的CUSTOMER
值现在为00。
但是,当我运行此代码时,它不起作用。当我删除'35'时,我只是在REP_NUM
表的CUSTOMER
属性中得到一个“空白值”而不是'00'。
有什么建议吗?
谢谢!
答案 0 :(得分:0)
您有几个问题: REP-表:
客户表
两个表:
这个有效:
CREATE TABLE REP
(
REP_NUM CHAR(2) PRIMARY KEY -- No default, doesn't make sence, it will FAIL the 2nd time you use it.
-- other columns
);
CREATE TABLE CUSTOMER
(
CUSTOMER_NUM CHAR(3) PRIMARY KEY,
FOREIGN KEY (REP_NUM) REFERENCES REP(REP_NUM) ON DELETE SET DEFAULT, -- mention the column as well!
REP_NUM CHAR(2) DEFAULT '00'
-- other columns
);
INSERT INTO rep(rep_num) VALUES('00');
INSERT INTO rep(rep_num) VALUES('35');
INSERT INTO customer(CUSTOMER_NUM, rep_num) VALUES('x', default); -- results in 'a'
INSERT INTO customer(CUSTOMER_NUM, rep_num) VALUES('y', '35');
DELETE FROM rep WHERE rep_num = '35';