phpMyAdmin在插入第一个表时执行触发器时在第二个表中存储一个随机数

问题描述 投票:1回答:1

我有一个名为“ Log_Data”的表,其中有两个字段,

  • “日期”数据类型的日志日期
  • 最大大小为250的“ varchar”数据类型的log_information]
  • 我还有一个名为“患者”的表,它具有许多属性,其中两个是,

  • 病人ID
  • p_name
  • 现在,我正在尝试在“患者”表的“插入”上创建触发器。选择触发是在“插入”和“插入”执行之后进行。触发器定义如下,>

insert into log_data
 values(NOW(), 'New patient with Id  = ' + new.patient_id + ' and name = ' + new.p_name + ' is added')

请注意,log_data的第一个属性是“ log_date”,第二个属性是“ log_information”

完成此操作后,我在“患者”表中插入了新的内容,如下所示,

INSERT INTO patient(patient_id, p_name, p_gender, p_address, p_phone_no, p_age, p_CNIC, p_isolation_id, p_quarantine_id, p_city, p_province, p_status) VALUES ('7','Asad Hussain','Male','Lasani Town House #5-B','03041502627','23','3310256209012','1',NULL,'Faisalabad','Punjab','ACTIVE')

现在,该命令已成功执行...它也已成功插入患者,但不适用于log_data表。当我转到log_data表时,它显示正确添加的时间(即log_date很好),但对于log_information,它会在其中添加一些随机数。我多次执行插入查询,这些是我得到的值,>

2020-06-14
20200614232014

2020-06-14
20200614232209

2020-06-14
8

2020-06-14
8

2020-06-14
8
2020-06-14
8
2020-06-14
9

因此,我尝试将触发器从“之后”更改为“之前”,但仍然显示相同的错误。

然后,我尝试将其数据类型从varchar更改为“ Text”,然后它开始仅在log_information中插入'8'(这些时候,我要添加的条目的患者ID为'8')然后,我尝试插入患者ID = 9的患者记录,然后这一次,它在log_information中存储了“ 9”(这次我也将数据类型也从文本更改回了varchar(250))

所以,我现在看到的是,它正在将“ Patient_id”插入到log_information中,但是跳过了其余信息……而且,它为前两个插入添加了一些随机数,我仍然不知道为什么。

有人可以指导我如何解决此问题以及如何将实际要存储的字符串存储在log_data表中吗?

此外,是否可以使用触发器存储自动递增的log_id?这将在创建日志时存储每个日志的ID(并且log_id将自动递增,这意味着在编写触发器时,我们不必将其提供给log_data中的插入内容)谢谢!

我有一个名为“ Log_Data”的表,该表有两个字段,“ date”数据类型的log_date,最大大小为250的“ varchar”数据类型的log_information我有另一个名为“患者”的表...] >

请您始终CONCAT合并文本

insert into log_data
 values(NOW(), CONCAT('New patient with Id  = ', NEW.patient_id ,' and name = ' , NEW.p_name , ' is added'))
mysql triggers phpmyadmin database-trigger
1个回答
2
投票

请您始终CONCAT合并文本

insert into log_data
 values(NOW(), CONCAT('New patient with Id  = ', NEW.patient_id ,' and name = ' , NEW.p_name , ' is added'))
© www.soinside.com 2019 - 2024. All rights reserved.