我是一名 T-SQL 编码员,我开始在 MySQL Workbench 中编码。我正在尝试在 MySQL 中应用触发器和函数,但在语法上遇到了困难。
基本上,我下面的代码希望使用 StudentID(递增)作为我的 Studentnumber 代码的基础,该代码的最大值为 5 个零位。像这样----> 13-00001(其中 13 是年份的最后一位,1 是 StudentID 值。)所以如果我插入 291 条记录,我的最后一条记录将是 13-00291。
在 T-SQL 中,我有以下代码:
create table Student
( StudentID int identity not null primary key,
Name varchar(100),
StudentNumber varchar(10)
)
create function StudentNumber (@id int)
returns char(9)
as
begin
return (SELECT SUBSTRING((CONVERT(VARCHAR(10),GETDATE(),112)),3,2)) + '-' + right('000000' + convert(varchar(10), @id), 6)
end
create trigger Student_insert on Student
after insert as
update
Student
set
Student.StudentNumber = dbo.StudentNumber(Student.StudentID)
from
Student
inner join
inserted on Student.StudentID= inserted.StudentID
当我开始在 MySQL 中编码时,创建表是基本的,但是当我创建触发器和函数时,mysql 的工作方式似乎有很大的不同。我读过 MYSQL 中的 Identity 等价物是 AutoIncrement PK,但我也读过当触发触发器时,它无法获取我的 PK 的值,因为尚未提交记录(或类似的东西)我已经读过,在 MySQL 中执行我想要的功能的唯一方法是创建一个临时表来存储 ID 或其他内容。但是我想在这里询问其他人的意见,是否有一种方法可以在 MYSQL 中重新创建我的函数而不必求助于创建临时表。
谢谢