自动在另一个表中创建(和删除条目)

时间:2012-06-28 15:41:54

标签: mysql sql

我是SQL的初学者,我很难找到解决一个非常简单问题的方法。

场景是这样的:当用户在我的网站上注册时,他们会插入到只有几列(user_id,用户名,电子邮件,密码,日期)的“用户”表中。

我不想在他们注册时再问他们,但是我希望每个用户都有一个可选的设置页面,他们可以输入其他用户信息,如姓,姓,生物等。

为了尝试保持我的数据库清洁,我已经为此信息创建了第二个名为“user_info”的表。此表包含“用户”中存在的“user_id”列。

我正在努力解决这两个问题。我想要它,所以无论何时将用户添加到'users'表中,都会将新条目插入到具有相同'user_id'的'user_info'中。这也需要删除用户。

到目前为止,我已经收集到需要使用FOREIGN KEY并试图使用CASCADE来解决这个问题。

我的表格如下:

CREATE TABLE users (
user_id INT AUTO_INCREMENT NOT NULL,
username VARCHAR(20) NOT NULL default '',
email VARCHAR(100) NOT NULL default '',  
password VARCHAR(100) NOT NULL default '',
create_date DATETIME NOT NULL default '0000-00-00',
PRIMARY KEY (user_id),
UNIQUE KEY (username),
UNIQUE KEY (email)
);

CREATE TABLE user_info (
    user_id INT NOT NULL,
    forename VARCHAR(30) NOT NULL default '',
    surname VARCHAR(30) NOT NULL default '',
    dob DATE NOT NULL default '0000-00-00',
    location VARCHAR(30) NOT NULL default '',
    PRIMARY KEY (user_id),
    FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE
);

我很感激这个问题的任何建议,以及关于一般最佳实践的任何建议!

亲切的问候

亚当

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我也只是sql的初学者,我提供的解决方案可能不是最好的。您可以通过两种方式处理此问题

  • 在users表中查找最后一个插入的id,然后在user_info中使用获取的id插入空白记录。

    由于您的用户ID是主键,因此只需在插入时执行以下操作:

  

SELECT max(USER_ID)FROM users

将获取的结果存储在变量中,然后在user_info表中插入变量值

  

INSERT INTO user_info(user_id)VALUES('。$ theValueInTHeVariable。');

  • 第二种方法是使用触发器

在此解决方案中,您可以创建一个触发器,以便每当新的id插入到users表中时,它会自动获取最后生成的user_id并将其插入Users_info表。

有关触发器的更多信息,请参阅以下内容。

link1 link2

如果您仍然遇到任何问题,请回复。