Sql 如何通过在ORACLE中插入时提取另一列来创建触发器?

Sql 如何通过在ORACLE中插入时提取另一列来创建触发器?,sql,oracle,plsql,Sql,Oracle,Plsql,考虑如下: 表: 创建表test1 TID CHAR8,TNAME VARCHAR230 在插入TNAME时,我希望根据TNAME生成TID。 示例:TNAME=运动自行车TID=SB 如果TNAME包含1个单词,则前4个字母。 如果它包含两个单词,那么第一个单词的前两个字母和第二个单词的后两个字母就是这样 请用服务器端语言向我展示你能做什么我想要用sql,PL/SQLuse你的例子与你的描述不匹配;那不是SpBi吗?但更重要的是,这不是会产生很多冲突吗?TID的意义是什么?它将用于什么?这似乎

考虑如下:

表: 创建表test1 TID CHAR8,TNAME VARCHAR230

在插入TNAME时,我希望根据TNAME生成TID。 示例:TNAME=运动自行车TID=SB 如果TNAME包含1个单词,则前4个字母。
如果它包含两个单词,那么第一个单词的前两个字母和第二个单词的后两个字母就是这样

请用服务器端语言向我展示你能做什么我想要用sql,PL/SQLuse你的例子与你的描述不匹配;那不是SpBi吗?但更重要的是,这不是会产生很多冲突吗?TID的意义是什么?它将用于什么?这似乎更多地是关于在PL/SQL或SQL中生成该值的逻辑,而不是关于触发器本身。
CREATE OR REPLACE TRIGGER aaa
  BEFORE INSERT ON test1
  FOR EACH ROW
BEGIN
IF INSTR(:new.TNAME, ' ') > 0 THEN
:new.TID = SUBSTR(:new.TNAME, 1, 2) + SUBSTR(:new.TNAME, INSTR(:new.TNAME, ' ') + 1, 2)
ELSE
:new.TID = SUBSTR(TNAME, 1, 4)
ENDIF;
END;