计划:当用户购买一张票时,我将一条记录插入到适当的表中。例如,如果用户购买:
Ticket#1,我将一条记录插入Table1
Ticket#2,我将一条记录插入Table1和Table2
Ticket#3,我将一条记录插入Table1和Table3
问题:如何接收不是类型为1的票证的所有数据,然后拆分参数插入到单独的表中。例如,当我试图为Table2创建触发器时,该触发器只能接收与Table2列匹配的参数。如何接收表1的数据?
一个完整购买票证类型2的示例。
用户在线购买票证->web表单发生了...->dao向数据库发送一个insert命令->Table2的触发器启动并验证Table1和Table2的信息。
谢了!
您可以以任何方式设计它,但考虑到票证类型之间没有太大差异,我将有一个单独的表:
CREATE TABLE TICKET
(ID_TICKET NUMBER
CONSTRAINT PK_TICKET
PRIMARY KEY
USING INDEX,
TICKET_TYPE NUMBER
NOT NULL
CONSTRAINT TICKET_CK1
CHECK(TICKET_TYPE IN (1, 2, 3)),
PRICE NUMBER
NOT NULL,
QUANTITY NUMBER
NOT NULL,
DEPARTURE_TIME DATE
NOT NULL,
SEATING NUMBER
CONSTRAINT TICKET_CK2
CHECK(1 = CASE TICKET_TYPE
WHEN 1 THEN CASE
WHEN SEATING IS NULL
THEN 1
ELSE 0
END
WHEN 2 THEN CASE
WHEN SEATING IS NULL
THEN 0
ELSE 1
END
WHEN 3 THEN CASE
WHEN SEATING IS NULL
THEN 1
ELSE 0
END
END),
REFUNDABLE_INDC CHAR(1)
NOT NULL
CONSTRAINT TICKET_CK3
CHECK(REFUNDABLE_INDC = CASE TICKET_TYPE
WHEN 1 THEN 'N'
WHEN 2 THEN 'Y'
WHEN 3 THEN 'N'
END),
FOOD CHAR(1)
NOT NULL
CONSTRAINT TICKET_CK4
CHECK(FOOD = CASE TICKET_TYPE
WHEN 1 THEN 'N'
WHEN 2 THEN 'N'
WHEN 3 THEN 'Y'
END),
DRINK CHAR(1)
NOT NULL
CONSTRAINT TICKET_CK5
CHECK(DRINK = CASE TICKET_TYPE
WHEN 1 THEN 'N'
WHEN 2 THEN 'N'
WHEN 3 THEN 'Y'
END));
这里使用CHECK约束来确保根据票证类型只填写适当的字段。
祝你好运。
也许有人能帮我澄清一下。 我正在尝试编写一个插入前触发器,如果它留空,可以设置关闭。这可能吗? 没有太多代码可显示。我所做的只是创建了一个带有调试语句的简单的插入前触发器,以确保我的触发器在验证规则之前执行。似乎验证规则是第一位的(我显然无法更改它)。触发器永远不会触发。 这是可行的还是不可能的?
我正在尝试创建一个触发器,该触发器将在更新另一个表之后更新一个表。我需要它,这样如果数字列中的一个数字被更新,那么这需要记录在另一个表中。这就是我到目前为止所拥有的。。 测试更新到表: 如您所见,我正在尝试将新插入的用户编号存储到一个变量中,然后该变量将用于填充user_changes表的insertednumber列。任何帮助都将不胜感激,谢谢!
问题内容: 嘿,我有一个连接两个不相关表的Junction表。两个表都有。我需要使用不同的值从每个表中选择,例如,这就是我的看法: 我见过的所有示例都使用一条语句,但是两个表具有相同的值,在这种情况下,它们不是。 问题答案: 试试这个查询:
问题内容: 我要在tableA上写一个插入触发器。它将使用相同的表但不同的列执行更新。执行此操作时出现错误。我的触发器是 我有一个应用程序将单独执行col2并将col1保持为空。因此,一旦插入行,我的触发器将为col1提供值。但是插入行时出现错误消息,提示“触发器失败且无效”。这该怎么做。TIA。 问题答案: 如果要分配一个简单的默认值,最简单的方法是使用DEFAULT子句在表上声明它。 这适用于
在“name=new.user_name”后面发现意外的标记“end-of-statement”。预期的令牌可能包括:“”..sqlcode=-104,sqlstate=42601,driver=4.9.78 SQL code:-104,SQL state:42601
问题内容: 假设我有两个表,并且 我想在一个查询中将来自某些输入的数据插入到表中,该怎么做? 请,如果可以做到,请解释语法。 问题答案: MySQL不支持在单个INSERT语句中进行多表插入。奇怪的是,Oracle是我所知道的唯一一个…