使用MYSQL触发器和外键

时间:2014-11-14 04:22:47

标签: mysql database database-design triggers database-schema

我不知道如何处理我的问题,我正在寻找最实用的解决方案。我必须在多个表中跟踪用户ID,我正在查看触发器和外键以解决每个用户的数据库初始插入问题。在注册时,我想在每个数据库中使用用户ID创建一行。这样,当我在代码中引用它时,它总是一个更新语句。

这是我的表格结构

        CREATE TABLE `authentication` (
          `userid` int(11) unsigned NOT NULL AUTO_INCREMENT,
          `fname` varchar(11) COLLATE utf8_unicode_ci DEFAULT NULL,
          `lname` varchar(11) COLLATE utf8_unicode_ci DEFAULT NULL,
          `email` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
          `password` varchar(11) COLLATE utf8_unicode_ci DEFAULT NULL,
          `online` int(11) DEFAULT NULL,
          `created_at` varchar(11) COLLATE utf8_unicode_ci DEFAULT NULL,
          PRIMARY KEY (`email`),
          KEY `userid` (`userid`)
        ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


        CREATE TABLE `user_progress` (
          `userid` int(10) NOT NULL,
          `progress_event` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL,
          PRIMARY KEY (`userid`)
        ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

以下是我尝试制作的示例触发器

        CREATE TRIGGER user_progress_add
        AFTER INSERT ON authentication
        FOR EACH ROW
        BEGIN
          INSERT INTO user_progress (userid, progress_status)
          VALUES (NEW.userid, 'signup');
        END

此触发器不起作用。它给出错误“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以便在第1行的'END'附近使用正确的语法。”

我想我的问题是,我的触发器有什么问题?在这种情况下触发器比外键更好吗?

0 个答案:

没有答案