我有四個表:消息,MessageCategory,MessageStatus和MessageLevel。插入來自多個表的數據
MessageCategory,MessageStatus和MessageLevel都只有三個字段:標識(主鍵),代碼和描述。消息引用這三個字段,並有幾個其他數據字段,包括標識(主鍵)MessageText和Order。身份字段是自動遞增的字段。
我現在需要編寫一個SQL腳本來爲所有四個表添加一些默認數據。問題是,我需要創建一個腳本,將其發送給將執行此腳本的客戶。我無法編寫更智能的代碼來完成整個更新。雖然三個表只是簡單的插入語句,但它是Messages表,這引起我一些額外的麻煩。
我不能刪除任何指標,我不能假設它開始從1開始爲主鍵計數。
所以,作爲一個例子,她的一些數據:
INSERT INTO MessageCategory (Code) Values ('Cat01');
INSERT INTO MessageStatus (Code) Values ('Status01');
INSERT INTO MessageLevel (Code) Values ('Level01');
而且消息將需要的東西是這樣的:
INSERT INTO Messages(Category, Status, Level, MessageText, Order)
VALUES(
(SELECT Identity from MessageCategory where Code='Cat01'),
(SELECT Identity from MessageStatus where Code='Status01'),
(SELECT Identity from MessageLevel where Code='Level01'),
'Just some message',
1
);
這是行不通的,雖然。那麼,有什麼訣竅讓這個工作? (保持代碼的可讀性...)
不幸的是,我沒有訪問其他數據庫。我可以測試它,但一旦它似乎工作,這只是一個發送和祈禱它的工作的問題...
我傾向於在我的SQL腳本用方括號[]周圍的所有表和字段名稱。這解決了可能的衝突。我傾向於使用更多的保留字作爲字段和表名,因此添加括號對我來說是一種自動操作。 :-) – 2009-10-19 12:58:26
所以你應該在你的示例代碼中做到這一點。以及。 ;-) – Tomalak 2009-10-19 13:01:55
是的,我希望那些括號會混淆一些,所以我實際上刪除了它們。 :-) – 2009-10-19 14:45:03