在我的架构中我有两列,我是MySQL新手如何使用mysql中的Computed Column连接列
ordertbl schema
Autoorderid int auto-increment
Orderid varchar(45)
我想在插入新行时重写orderid值插入
我已经创建了触发器,但是当我插入行时,此触发器没有触发
insert into order_master(customerID,ItemID,quantity,Unitprice,Total) values ('07961A','1000',6,5,30)
use ntc_sales; DELIMITER
$$ CREATE TRIGGER order_master_BINS BEFORE INSERT ON order_master FOR EACH ROW
SET NEW.OrderID = CONCAT('ORD' ,NEW.AutoOrderID) ; end;
创建表格 在这里输入代码
CREATE TABLE Demo(ID INT PRIMARY KEY,
IDwithChar AS 'ORD' + RIGHT('0000000' + CAST(ID AS VARCHAR(10)), 6) PERSISTED,valuevar nvarchar(45)
)
这显示mysql中的语法错误如何在mysql
中创建如上面的模式表答案 0 :(得分:1)
你无法在MySQL中使用触发器来实现这一点。
BEFORE
触发器,因此NEW.AutoOrderID
将始终为0. AFTER
触发器无法更新与触发时相同的表。换句话说,不是在INSERT上触发,而是使用在单个事务中执行插入/更新的存储过程创建行可能是继续进行的最佳方式。
编辑:您可以为序列使用单独的表,但这不能保证订单号与AutoOrderID的值相同,只是一个唯一值。
CREATE TABLE order_sequence (
seq INT PRIMARY KEY AUTO_INCREMENT
);
CREATE TRIGGER order_master_BINS BEFORE INSERT ON order_master
FOR EACH ROW
BEGIN
INSERT INTO order_sequence VALUES (0);
SET NEW.OrderID = CONCAT('ORD', LAST_INSERT_ID());
END