我有四个表:消息,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