我如何增加外国键两Innob表,使他们自动更新的?
-
05-07-2019 - |
题
我有两个表格用户和lead_contacts其中有类似的数据。当有人购买产品,他们成为用户。我应该怎样修改的两个创建staements下如此:
- 这导致表收到一个新的 项first_name,last_name,公司和电子邮件,当一个用户创建。
first_name,last_name,公司和电子邮件用户的表格更新 时自动导致信息表改变
CREATE TABLE
lead_contacts
(
contact_id
int(11)"NOT NULL"auto_increment,
user_id
int(11)无符号不为空默认的'0',
email
varchar(100)"NOT NULL"默认",
company
varchar(50)"NOT NULL"默认",
first_name
varchar(50)"NOT NULL"默认",
last_name
varchar(50)"NOT NULL"默认",
address
varchar(100)"NOT NULL"默认",
address_2
varchar(100)"NOT NULL"默认",
city
varchar(50)"NOT NULL"默认",
state
varchar(50)"NOT NULL"默认",
country
varchar(50)"NOT NULL"默认",
postal_code
varchar(30)"NOT NULL"默认",
phone
varchar(30)"NOT NULL"默认",
fax
varchar(30)"NOT NULL"默认",
ship_bill_same
枚举('Y','N')"NOT NULL"默认的'Y',
notes
文NOT NULL,
admin_notes
文NOT NULL,
list_name
varchar(50)"NOT NULL"默认",
lead_list
int(11)无符号不为空默认的'0',
is_master_list
枚举('N','Y')"NOT NULL"默认的'N',
active_work
枚举('Y','N')"NOT NULL"默认的'Y',
parentID
int(11)无符号不为空默认的'0',
主键(contact_id
),
关键user_id
(user_id
),
关键lead_list
(lead_list
),
关键is_master_list
(is_master_list
),
关键active_work
(active_work
),
关键parentID
(parentID
)
)选默认CHARSET=latin1PACK_KEYS=1;CREATE TABLE
users
(
userID
int(11)"NOT NULL"auto_increment,
access_level
int(11)不NULL默认'0',
username
varchar(100)"NOT NULL"默认",
password
varchar(100)"NOT NULL"默认",
first_name
varchar(50)"NOT NULL"默认",
last_name
varchar(50)"NOT NULL"默认",
company
varchar(100)"NOT NULL"默认",
email
varchar(100)"NOT NULL"默认",
主键(userID
),
唯一的钥匙username
(username
)
)选默认CHARSET=latin1;
解决方案
我想你误解了如何外键的工作。
参照从会导致用户意味着一个行必须已经存在的用户之中的行导致可以参考。
有没有办法在SQL使依赖表自动创建一个行在其父母表中的需求。
你可以做到这个触发的,我想。但不是一个外国的关键制约因素。此外,值填写入父母表必须来自某个地方。无论你需要指定他们在插入的发言,在你的申请,或在一个触发器或其他使用默认值定义为每一列在用户表。鉴于你有一个独特的制约因素 users.username
, 我不认为这将有可能从一个触发器。
再:你的后续行动问题的评论:
没有,一个外国的关键不能做什么你在描述的。当你修改的信息 leads
表(表与外交的关键), 只 事情一外国的关键能做的就是防止修改如果你试图改变 leads.user_id
列值就是找不到的 users
表。
外键的儿童(leads
)表不能改变任何东西的父母(users
)表。
我不确定来源是什么你的错误理解。你有没有读过它的地方,或者看到有人做这样的事情?