我有一种情况,我必须从表中删除记录,该记录可能存在于另一个数据库中,也可能不存在。例如,该表称为Md5SumJob。它存在于数据库A中,但不存在于数据库B中。因此,我已经准备好检查表是否存在于数据库中。
def changed_selection(self):
indexes = self.ui_explorer_selection.selectedIndexes()
for index in indexes:
ix_source = self.explorer_model.mapToSource(index)
item = self.explorer_model.sourceModel().getItem(ix_source)
print(item.name, item.tags)
但是现在我需要弄清楚如何删除表中的实际数据。可能存在或不存在的表只有1列(nvarchar)。因此,在这里我无法弄清楚如何删除基于该1列的记录以及该表是否存在。到目前为止,这是我尝试过的方法,但是不起作用:
for form in formset.cleaned_data:
if 'image' in form:
image = form['image']
photo = DetailImage(detail=detail_form, image=image)
photo.save()
答案 0 :(得分:2)
使用sp_executesql执行动态查询:
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.min.js"></script>
<div id="app">
<icon></icon>
<global-component></global-component>
</div>
答案 1 :(得分:0)
使用动态SQL很诱人:
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 'Md5SumJob')
BEGIN
exec sp_executesql 'delete from Md5SumJob where CtpJobId in (select CtpJobId from @pid)'
END;
一个警告是表变量不在exec
中作用域。因此,将其替换为临时表并使用:
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 'Md5SumJob')
BEGIN
exec sp_executesql 'delete from Md5SumJob where CtpJobId in (select CtpJobId from #pid)'
END;