2015-10-09 58 views
0

獲取數據後,我需要從表中employee retrive數據,如事件調度來自其它表

select empid, name, place, position, date_of_joining where status=active 

環路保持調度中檢索到的數據。如果命名position列是Software engineerdate_of_joining> 01-01-2010,那麼EMPID,名稱,地點,位置必須保存在另一個表名valid_employees

如何寫這個調度? 我從來沒有寫過調度程序。我是這個主題的新手。請幫忙。

由於事先在CREATE EVENT

+0

您嘗試過什麼嗎? – Tiger

+0

實際上,我在for循環本身附近的開始處被卡住了。所以我不能再去 –

+0

看看這個http://www.mysqltutorial.org/mysql-triggers/working-mysql-scheduled-event/ – Hexana

回答

1

MySQL文檔正是描述了例子,說明如何設置MySQL中的事件。

在事件正文(在DO之後),您需要編寫一個insert ... select ...語句將記錄傳輸到有效的employees表。這將是這樣的:

INSERT IGNORE INTO valid_employees 
    (empid, name, place, position, date_of_joining, status) 
    SELECT (empid, name, place, position, date_of_joining, status) FROM employees 
    WHERE status='active' and position='Software Engineer' and Date('2010-01-01')<date_of_joining 

不過,我會考慮創建與上面的選擇,然後你不必創建活動,並在將數據傳輸到另一臺在員工表的視圖。這可能是一個更有效的解決方案,但我們不知道詳細信息以表明哪種解決方案更好。

0

以下語句將創建一個週期性事件,該事件每分鐘執行一次,並在創建時間過後的1小時內過期。然後等待1分鐘,查看錶格並查看是否添加了記錄:

CREATE EVENT test_event_03 
ON SCHEDULE EVERY 1 MINUTE 
STARTS CURRENT_TIMESTAMP 
ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR 
DO 
    INSERT IGNORE INTO valid_employees 
    (empid, name, place, position, date_of_joining, status) 
    SELECT (empid, name, place, position, date_of_joining, status)FROM employees 
    WHERE status='active' and position='Software Engineer' and Date('2010-01-01')<date_of_joining 
+0

如何檢查不同操作中的條件是否必須針對不同的條件進行。就像考慮一樣,還有一個表叫薪水和一列salary_status。僱員表也有列salary_status。如果employees表salary_status等於salary表salary_status,則更新 –