IS there any MySQL Default tables like DUAL in ORACLE.

Go4Expert Member
20May2009,13:08   #1
amit_27's Avatar
IS there any default table mysql server automatically creates and manages these tables like INSERTED, DELETED table in MSSQL, DUAL table in ORACLE.

I have used in mssql a query in trigger for insert operation
declare trg_cursor cursor for select fname from inserted;

In oracle a query in trigger for insert operation
select system.clsyncseq.nextval into synchpointnumber from dual;

like this i need default tables for mysql to fire a same query.

I have written a trigger on table t1 for insert. When inserted a row to t1 my trigger will read the information from INSERTED, DUAL tables in case of MSSQL, ORACLE instead of table t1.
The same thing I need to write for MySQL for INSERT, UPDATE, DELETE operation.
Can you please direct me to achieve this?
Team Leader
20May2009,16:28   #2
pradeep's Avatar
Code: SQL
declare trg_cursor cursor FOR SELECT fname
Go4Expert Member
20May2009,16:54   #3
amit_27's Avatar
created table account :
Code:
+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| acct_num | int(11)       | YES  |     | NULL    |       |
| amount   | decimal(10,2) | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
If I use (MSSQL type)
declare trg_cursor cursor for select acct_num;

while insert :
mysql> INSERT INTO account (acct_num, amount) VALUES (0, 23);$
ERROR 1054 (42S22): Unknown column 'acct_num' in 'field list'
Team Leader
21May2009,22:02   #4
pradeep's Avatar
Code: SQL
declare trg_cursor cursor FOR SELECT acct_num;

You have to specify a table name here
Go4Expert Member
22May2009,12:53   #5
amit_27's Avatar
Exactly, I need to specify the table name here. I was asking for the table name to specify in my query like DUAL, INSERTED, DELETED in ORACLE, MSSQL.

Like INSERTED in MSSQL, DUAL table in ORACLE temporary store the updated, inserted, deleted row whilst and I can get the acct_num of only new, delete, updated row form DUAL table for my transaction.

The same thing I want to achieve using MySQL. But I didn't see any table which
Team Leader
22May2009,13:33   #6
pradeep's Avatar
Dual is available in MySQL as well

Code: SQL
SELECT COUNT(*) col FROM dual WHERE 1=0
Go4Expert Member
22May2009,13:54   #7
amit_27's Avatar
Yes, we can use the dual table but not like the Oracle. If we don't have any table reference then we can use dual in MySQL. like for arithmatic operations.
Go4Expert Member
26May2009,15:33   #8
amit_27's Avatar
Thanks pradeep answering my question. I solved the problem.

As MySQL support "For Each Row" mechanisam, we get the directly the output which want using "new" and "old" keyword.

Lke new.acct_num, old.acct_num.

Default table not required and also not available.
Go4Expert Member
26May2009,15:34   #9
amit_27's Avatar
What is the default schema name in MySQL 5.1.34 like in ORACLE is username (system), in MSSQL is "dbo"?


I think it is database name Isn't it?
Go4Expert Member
27May2009,15:23   #10
amit_27's Avatar
what is the default escape character in MySQL?

We have in ORACLE like ' " ', in MSSQL like ' [] ' which is used while creating table.

MSSQL
create table [aa/njh] (col1 INT);

ORACLE
create table "aa/njh" (col1 INT);


If I use both( ", []) in MYSQL while create table it is nor working fine.
My aim is to mhave table name with special character on numeric.