从列中删除特定值

时间:2016-05-02 07:24:01

标签: sql sql-server sql-delete

我想从WHERE条件的一列中删除特定值/数据。

CIVILITE

ID_CIVILITE CIV_LIBELLE
1           M.
2           Mme
3           Mlle
4           Aucun

DELETE FROM CIVILITE WHERE CIV_LIBELLE='Aucun';

错误:

  

DELETE语句与约束REFERENCE冲突   “FK_PERS_CIVILITE”。冲突发生在数据库“DBDB”中,   “dbo.PERSONNE”表,列'ID_CIVILITE'。

如何在有约束的情况下删除某些值。?

4 个答案:

答案 0 :(得分:2)

您收到此错误的原因是您尝试删除另一行引用的行,从而导致错误。因此,要么删除引用行,要么暂时删除约束。你需要先改变你的表格如下:

ALTER TABLE [DBDB].[dbo].[PERSONNE] NOCHECK CONSTRAINT [FK_PERS_CIVILITE]

然后你可以删除记录。

确保删除记录后再次应用约束。

ALTER TABLE [DBDB].[dbo].[PERSONNE] WITH CHECK CONSTRAINT [FK_PERS_CIVILITE]

答案 1 :(得分:1)

似乎表CIVILITE列ID_CIVILITE是主键,首先删除引用表中的类似行,即外键表。

-- Run 1st
DELETE FROM [PERSONNE]
WHERE ID_CIVILITE IN
(SELECT CIVILITE WHERE CIV_LIBELLE='Aucun')
-- Run 2nd
DELETE CIVILITE WHERE CIV_LIBELLE='Aucun'

答案 2 :(得分:1)

要么DROP constraint,要么更好 - 您更新Personnes中的数据,以便没有记录具有值“Aucun”。如果允许,您可以将其设置为Null

答案 3 :(得分:1)

您可能有一个像// process the data so the average and number of elements are visible to each bar var data = allrankings.map(function(rankings){ var avg; avg = rankings.reduce(function(a,b){ return a+b; })/rankings.length; return rankings.map(function(d){ return {val: d, avg: avg, numBars: rankings.length}; }); }); var barGroups = svg.selectAll(".bar-groups") .data(data) .enter() .append("g") .attr("transform", function(d, i){ return "translate("+ i*20 + ",0)"; // may want to use scales }) .classed("bar-groups",true); var bars = barGroups .selectAll(".bars") .data(function(d){ return d; // returns a one dimensional array of objects }) .enter() .append("rect"); 这样的表,它有一个外键约束,如:

bars.attr("height", function(d){ return d.avg/d.numBars; });

并且此表必须包含一些具有civilite_id = 4的行。

您必须:

  • 删除约束
  • 使用此文明删除行
  • 将行更新为空民(如果可以)
  • 将行更新为不同的文明