【问题标题】:MySQL foreign key constraints : on updating one table, fill another table with some data from the first tableMySQL 外键约束:更新一个表时,用第一个表中的一些数据填充另一个表
【发布时间】:2021-08-24 09:13:50
【问题描述】:

我有两个表,用户表和登录表。 说:

Create table users(
 id int not null,
 name varchar not null,
 email varchar not null,
 password varchar not null,
 entries int default 0,
 primary key(id));

Create table login(
 id int not null,
 email varchar not null,
 password varchar not null,
 user_id int not null,
 Primary key(id)),
 Foreign key (user_id) references users(id));

我可以添加哪些约束或如何解决问题,以便每当我在 users 表中添加用户时,emailpassword 列都会添加到登录表也是(就像说我创建了用户表的最小化版本,它只包含用户的登录凭据)。并且每当我从用户表中删除一个用户时,他应该从登录表中删除。

我希望我的描述性已经足够了????

【问题讨论】:

  • 有2张桌子的原因是什么?一个用户是否可以有多个登录名?
  • 不@Akina,用户表可能会随着时间的推移而变得混乱(很多列),所以我只想创建一个单独的表,其中只包含每个创建的用户的登录凭据。可能不是最好的设计,但我是数据库管理的初学者,所以这只是我脑海中闪过的一个想法,我很想尝试。
  • 如果是这样,则将凭据数据存储在login 表中,并在用户表中存储“很多列”,包括对登录表的引用。您将避免数据重复。

标签: mysql node.js express knex.js


【解决方案1】:

您可以定义constraint with cascade delete。要实现依赖表的更新,您需要triggers。可以定义 AFTER INSERT 触发器,您可以在其中更新任何依赖表。

同时,当你总是可以通过加入主表来获得它时,我会重新考虑在依赖表中使用冗余字段。

【讨论】:

    猜你喜欢
    • 2015-11-12
    • 2011-01-11
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    相关资源
    最近更新 更多