不知道触发器名,查询表里是否存在触发器
时间: 2023-10-09 12:05:26 浏览: 46
要查询表中是否存在触发器,可以使用以下SQL查询语句:
```sql
SELECT * FROM sys.triggers WHERE parent_object_id = OBJECT_ID('table_name');
```
将`table_name`替换为你想要查询的表的名称。如果返回结果为空,则表示该表没有触发器。如果返回结果非空,则表示该表存在触发器。
请注意,此查询只能查询用户定义的触发器,系统级触发器无法通过此方法查询。另外,你需要在具有适当权限的数据库上执行此查询。
相关问题
oracle触发器可以获取别的表里数据写到本表当中吗
是的,Oracle触发器可以获取别的表里的数据,然后将其写入到本表中。在触发器中,可以使用SELECT语句从其它表中检索数据,并将其存储在触发器所操作的表中。例如,可以使用以下语句从一个名为"orders"的表中检索数据:
```
SELECT customer_id, order_total
FROM orders
WHERE order_id = :new.order_id;
```
在这个例子中,触发器从"orders"表中检索了"customer_id"和"order_total"两列数据,并将其存储在触发器所操作的表中,以便后续的处理。需要注意的是,在使用触发器时,应该仔细考虑数据的来源和存储方式,以避免出现数据一致性的问题。
创建mysql触发器,查询A表和B表,如果条数相等就不操作,不然就删除B表原来的数据,插入A表的数据到B表里去
可以使用以下的 SQL 语句创建一个 MySQL 触发器来实现你的需求:
```
CREATE TRIGGER `sync_tables` AFTER INSERT ON `A` FOR EACH ROW
BEGIN
DECLARE a_count INT;
DECLARE b_count INT;
SELECT COUNT(*) INTO a_count FROM A;
SELECT COUNT(*) INTO b_count FROM B;
IF a_count != b_count THEN
DELETE FROM B;
INSERT INTO B SELECT * FROM A;
END IF;
END;
```
这个触发器会在每次向 A 表中插入新记录后触发。它会查询 A 表和 B 表的记录数,如果它们不相等,则会删除 B 表中的所有记录,并将 A 表中的记录插入到 B 表中。如果它们相等,则不执行任何操作。