2012-10-03 122 views
2

我一直試圖在mysql中設置觸發器無濟於事。 下面是與之相關的表格:Mysql觸發器腳本不工作

mysql> describe ttloki; 
+-------------+-----------+------+-----+-------------------+-----------------------------+ 
| Field  | Type  | Null | Key | Default   | Extra      | 
+-------------+-----------+------+-----+-------------------+-----------------------------+ 
| Lokinumero | int(11) | NO | PRI | NULL    | auto_increment    | 
| Ttnumero | int(11) | NO | MUL | NULL    |        | 
| Kirjausaika | timestamp | NO |  | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | 
+-------------+-----------+------+-----+-------------------+-----------------------------+ 
3 rows in set (0.00 sec) 

mysql> describe tyontekija; 
+----------+-------------+------+-----+---------+-------+ 
| Field | Type  | Null | Key | Default | Extra | 
+----------+-------------+------+-----+---------+-------+ 
| Numero | int(11)  | NO | PRI | NULL |  | 
| Sukunimi | varchar(40) | NO |  | NULL |  | 
| Etunimi | varchar(40) | NO |  | NULL |  | 
| Osasto | int(11)  | YES | MUL | NULL |  | 
| Lahios | varchar(40) | YES |  | NULL |  | 
| Postino | varchar(5) | NO | MUL | NULL |  | 
| Puhelin | varchar(16) | YES |  | NULL |  | 
| Palkka | int(11)  | YES |  | NULL |  | 
+----------+-------------+------+-----+---------+-------+ 
8 rows in set (0.00 sec) 

我最後的試用觸發器是這樣的:

create trigger uusitt 
after insert on TYONTEKIJA 
for each row 
insert into TTLOKI(Ttnumero) values 
(old.TYONTEKIJA.Numero); 

每當我試着插入TYONTEKIJA它給我說說什麼是在觸發值的誤差。

mysql> insert into TYONTEKIJA(Numero,Sukunimi,Etunimi,Osasto,Lahios,Postino,Puhelin,Palkka) values 
    -> (220000, "Saarikoski", "Pekka", 5, "Umpikuja 1", "02760", "060-7358461", 3000); 
ERROR 1054 (42S22): Unknown column 'old.TYONTEKIJA.Numero' in 'field list' 

我不明白如何正確設置這種觸發器。 我應該改變什麼來解決這個問題?

回答

0

當您插入一個值時,您不能使用old標識符,因爲還沒有舊值。也許你的意思是,new.Numero

+0

謝謝!這解決了我的問題。 –

+0

歡迎您! –