我有两个表格用户和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)表。

我不确定来源是什么你的错误理解。你有没有读过它的地方,或者看到有人做这样的事情?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top