我有一个数据库,其中有几十个表与外键相互关联.在正常情况下,我想要ON DELETE RESTRICT
这些约束的默认行为.但在尝试与顾问共享数据库快照时,我需要删除一些敏感数据.我希望我对DELETE FROM Table CASCADE
命令的记忆不是纯粹的幻觉.
我最终做的是转储数据库,编写脚本来处理转储,通过添加ON DELETE CASCADE
子句所有外键约束,从中恢复,执行删除,再次转储,删除ON DELETE CASCADE
,最后再次恢复.这比编写我在SQL中需要执行此操作所需的删除查询更容易 - 删除数据库的整个切片不是正常操作,因此架构并不完全适应它.
有没有人有更好的解决方案,下次这样的东西出现?
我想在MySql中做一个结合了几个列的select ...就像这个伪代码:
SELECT payment1_paid AND payment2_paid AS paid_in_full
FROM denormalized_payments
WHERE payment1_type = 'check';
Run Code Online (Sandbox Code Playgroud)
编辑:payment1_paid和payment2_paid是布尔值.
我不能使用任何其他语言来解决这个问题而不是MySql.
谢谢你的帮助!
编辑:很抱歉给了我总结和连接建议的每个人,但我已经投了那些早期的答案,因为它们无论如何都很有用.并感谢大家对你的令人难以置信的快速解答!
为什么以下不起作用?
CREATE FUNCTION Test (@top integer)
RETURNS TABLE
AS
RETURN
SELECT TOP @top * FROM SomeTable
GO
Run Code Online (Sandbox Code Playgroud)
我只是希望能够指定要返回的结果数.[SQL Server 2000.]
谢谢!
我在ASP.NET中使用FormView控件,以便将一个简单的表单插入到MS SQL DB中.我有onItemInserting的事件来设置一些值(例如时间戳等),并且很好奇如何在onItemInserting事件中检查一些用户输入的值并取消插入项目.我想在后面的代码中执行它的原因是查询数据库并使用这些值来验证用户输入的数据.
伪代码如下:
protected void Form_addRoom_ItemInserting(object sender, FormViewInsertEventArgs e)
{
... Query DB for some values ...
if(enteredMaxPeople > queryMaxPeople)
{
**Cancel** DB Insert
statusLabel.text = "Value entered not valid";
}
}
Run Code Online (Sandbox Code Playgroud)
最后,问题归结为如何取消FormView插入后面的代码?
谢谢!肖恩