我是SQL的开始,现在,我需要和我的教授完成一项任务。
我在SQL Server的数据库中设计了三个表。我有一个5列的距离表,距离5个不同的站。然后,我想从这些5获得最小距离。然后,我想将此单元格更改为NULL,而在另一个表格中,我将自动将此站点的状态从可用更改为不可用
实际上,每次,如果我从距离表中获得最小距离,我将分配该站并将该单元置为空,并更改另一个表中不可用的站状态。
那么,我如何设计触发器更好?
最佳索菲亚
答案 0 :(得分:0)
你的措辞有点令人困惑,但在我使用MySQL时,一切都必须详细定义。通过'距离',我认为你的意思是'路径'。通过列出到达目标所需的所有兄弟/子表,将表的行链接到远程表。但是你需要至少5-8个“真”或“假”的额外列。
一个可以标题为“is_access”而另一个标题为“is_available”,“is_changed”,“is_deleted”,“is_inuse” ,和“is_done”。您需要在JS / PHP / Perl中创建一个spyder(机器人)来监视您引用的此触发器。 true / false列跟踪权限,操作和状态,因此软件spyder已经定义了“状态”,直到完成为止。
- “is_changed”确认触发并启动您的程序。
- 然后软件读取其他真/假标志以确定其动作。他们的名字隐含于他们所做的事情,因为他们被称为“问题”。只要程序繁忙,“is_done”就会设置为false。程序根据需要更改其他标志的状态。完成所有操作后,将“is_done”标志设置为“true”。
- 小心你的程序删除了什么。除非内容无用或过时(例如会话数据或临时文件),否则使用“is_access”和“is_available”控制对远程表的访问可能会更好。路径长度应该是固定的,除非创建了另一个在同一路径但不是最后一个子路径的表。
- 我只触及了要完成的工作。您的程序必须定制以实现这些操作,因此我无法提供代码。首先要完成纸上的步骤,这样才有意义。
- 您可以创建一个包含这些真/假标志的表。在执行操作之前,您的触发器会让您的程序首先检查此表。如果您的表也可以指向一行常见操作而不是在源表中进行如此多的重复,则可以节省代码和表空间。
- 您的程序只需知道要执行的操作,要处理的行(按行和列),以及更新用于确定下一步操作的标志(如果有)。完成后,它会监听其他触发器。
- 您的程序也可以通过编辑路径本身来添加或减去目标路径中的其他表。它不会创建或删除表(这将是一个SQL操作,如果它影响程序负责的路径,则创建一个触发器),只需在“距离”路径中包含或删除它的名称。祝你好运。
醇>