【问题标题】:database phpmyadmin on insert trigger插入触发器上的数据库 phpmyadmin
【发布时间】:2017-01-26 07:00:46
【问题描述】:

有这个 SQL。

CREATE TABLE `accounts` (
  `account_id` int(3) NOT NULL,
  `username` varchar(36) NOT NULL,
  `password` varchar(36) NOT NULL,
  `email` varchar(60) NOT NULL,
  `access_level` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `normal_profile` (
  `normal_profileid` int(11) NOT NULL,
  `first_name` varchar(64) NOT NULL,
  `middle_name` varchar(64) NOT NULL,
  `last_name` varchar(64) NOT NULL,
  `age` int(2) NOT NULL,
  `gender` varchar(6) NOT NULL,
  `account_id` int(3) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `normal_profile`
  ADD CONSTRAINT `normal_profile_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `accounts` (`account_id`);

phpmyadmin ui

以上是我设置约束的方式。

每当我在我的帐户表中插入一些内容时,我是否还必须查询一个插入到 normal_profile 表中的内容?或者我可以自动做到这一点,以便数据库本身只会在 account_id = accounts.account_id 的 normal_profile 中添加一行?

我对插入约束有一个模糊的记忆,或者我弄错了?

Adding Trigger UI phpmyadmin

【问题讨论】:

  • 数据库应该如何知道不相关字段中的内容??
  • 我已经在 normal_profile 表中将 account_id 设置为 FK。我必须设置更多吗?

标签: php mysql phpmyadmin


【解决方案1】:

试试这个语法

delimiter #
     CREATE TRIGGER after_accounts
        AFTER insert ON accounts
         FOR EACH ROW
             BEGIN
          --  your insert query 
           end#

delimiter ;

【讨论】:

  • 我在 phpmyadmin 上添加了一个关于添加触发器的图像。在定义输入中,我应该将 SQL 查询放在哪里?
  • 您只需要在定义文本区域上插入查询
  • 这是更好的方法吗?或者在php中手动插入更容易接受?因为我的 account_id 是 Auto_Increment,所以每次我创建一个新的 acc('username','password','email','access_level') 在模型函数注册完成后才调用另一个模型函数?还是触发方式更容易接受?
  • 说真的,我建议您使用双重查询而不是触发它可以帮助您轻松调试,并且作为比较触发器对您来说是可行的
猜你喜欢
  • 2014-09-17
  • 1970-01-01
  • 2015-02-04
  • 2012-07-15
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
相关资源
最近更新 更多