标签: cascading-deletes

SQLite删除Cascade无法正常工作

在Android 4.2中,使用SQLite 3.7.11,当我从Quizzes表中删除一行时,下面是谁的模式,QuizQuestions表中的相应行不会被删除.

我无法弄清楚出了什么问题.我试过推杆

db.execSQL("PRAGMA foreign_keys = ON;"); 
Run Code Online (Sandbox Code Playgroud)

create table语句之前和之后.

创建表语句:

CREATE TABLE quizzes(quiz_name TEXT PRIMARY KEY COLLATE NOCASE);

CREATE TABLE quizQuestions(quiz_name TEXT, question_id INTEGER,
     PRIMARY KEY(quiz_name, question_id),
     FOREIGN KEY(quiz_name) REFERENCES quizzes(quiz_name) ON DELETE CASCADE,
     FOREIGN KEY(question_id) REFERENCES questions(question_id) ON DELETE CASCADE);
Run Code Online (Sandbox Code Playgroud)

sqlite android cascading-deletes

33
推荐指数
3
解决办法
2万
查看次数

实体框架4.1 InverseProperty属性和ForeignKey

我将使用外键在Employee和Team实体之间创建两个引用.所以我定义了两个实体如下

public class Employee
{
    public int EmployeeId { get; set; }
    public string Name { get; set; }

    [ForeignKey("FirstTeam")]
    public int FirstTeamId { get; set; }

    [InverseProperty("FirstEmployees")]
    public virtual Team FirstTeam { get; set; }

    [ForeignKey("SecondTeam")]
    public int SecondTeamId { get; set; }

    [InverseProperty("SecondEmployees")]
    public virtual Team SecondTeam { get; set; }
}

public class Team
{
    public int Id { get; set; }
    public string TeamName { get; set; }

    [InverseProperty("FirstTeam")]
    public virtual ICollection<Employee> FirstEmployees { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# mapping entity cascading-deletes entity-framework-4.1

31
推荐指数
1
解决办法
2万
查看次数

JPA/Hibernate删除实体有时不起作用

我有以下通常运作良好的代码:

public void delete(T object)
{
  EntityManager em = getPersistence().createEntityManager();
  EntityTransaction et = em.getTransaction();
  try
  {
    et.begin();
    object = em.find(object.getClass(), object.getId());
    em.remove(object);
    em.flush();
    et.commit();
  }
  catch(Exception e)
  {
    error("Unable to delete " + object.toString() + ": there are references to it.");
  }
  finally
  {
    if (et.isActive()) et.rollback();
    em.close();
  }
}
Run Code Online (Sandbox Code Playgroud)

对于我的许多实体类,这只是有效的.但是对于其中两个它什么都不做,它不会抛出任何异常,也不会删除该对象.来自hibernate的日志显示hibernate执行了许多选择查询,但它甚至没有尝试执行删除.

我已经尝试过其他类似问题发现的建议在这里这里,但无济于事(当然,后者意味着@Transactional我不能使用,但我只是封闭之间的语句begin()commit()代替).

我似乎无法找到这两个类比其他类更多(或更少)的东西.它们@PrimaryKeyJoinColumn就像我拥有的​​几乎所有其他实体一样使用,它们具有@OneToMany并且@ManyToOne就像ohters一样.说实话,他们确实有一个@OneToOne(optional = false)引用另一个类的字段,而其他实体没有这个字段,但我不会经历改变那个(并因此改变数据库模式)的麻烦,除非你告诉我可能有一个原因为了它.

@OneToOne责任吗?或者我的删除代码是否被窃听?

hibernate jpa cascading-deletes

31
推荐指数
3
解决办法
4万
查看次数

级联删除与实体框架 - 由EF删除的相关实体

我在实体框架中删除了一个问题.简而言之,EF显式尝试从数据库中删除实体,即使我已经明确地将EF配置为在数据库中使用级联删除.

我的设计:

我有三种实体类型MainEntity,EntityTypeAEntityTypeB.EF已经配置在删除时使用级联删除EntityTypeAEntityTypeB.换句话说,如果我删除了一个实例MainEntity,我希望删除所有相关EntityTypeAEntityTypeB实例.我从不删除EntityTypeAEntityTypeB不删除他们的父母.

我的问题是EF明确地发出了一个DELETE声明EntityTypeA,导致我的应用程序崩溃.

这就是我的模型:

这些关系具有以下非默认配置:

  • MainEntity -> EntityTypeA OnDelete: Cascade
  • MainEntity -> EntityTypeB OnDelete: Cascade

这种关系EntityTypeA -> EntityTypeBOnDelete: None

数据库内容

INSERT INTO MainEntities (Name) values ('Test')
insert into EntityTypeA (MainEntityID) VALUES (1)
insert into EntityTypeB (MainEntityID, EntityTypeAId) VALUES (1, 1)
insert into EntityTypeB (MainEntityID, EntityTypeAId) VALUES (1, 1)
Run Code Online (Sandbox Code Playgroud)

我的代码:

class Program
{ …
Run Code Online (Sandbox Code Playgroud)

entity-framework cascading-deletes

29
推荐指数
2
解决办法
4万
查看次数

是否可以从同一SQL语句中的多个表中删除?

可以使用join语句删除以限定要删除的集合,例如:

DELETE J
FROM Users U
inner join LinkingTable J on U.id = J.U_id
inner join Groups G on J.G_id = G.id

WHERE G.Name = 'Whatever'
and U.Name not in ('Exclude list')
Run Code Online (Sandbox Code Playgroud)

但是我有兴趣删除连接标准的两个方面 - LinkingTable记录和它所依赖的用户记录.我无法启用级联,因为我的解决方案首先是实体框架代码,而双向关系是多个级联路径.

理想情况下,我喜欢这样的东西:

DELETE J, U
FROM Users U
inner join LinkingTable J on U.id = J.U_id
...
Run Code Online (Sandbox Code Playgroud)

从句法上来说这没有用,但我很好奇这样的事情是否可行?

sql sql-server cascading-deletes delete-row

29
推荐指数
1
解决办法
9万
查看次数

如何确保首先在EF代码中的表关系上启用级联删除?

我想使用代码优先在表上启用CASCADE DELETE.从头开始重新创建模型时,即使关系是自动设置,也不会设置CASCADE DELETE.奇怪的是,它可以为一些具有多对多关系的表启用此功能,您可能认为它可能存在问题.

设置: 表A < - 表B.

表B的FK指向表A的PK.

为什么这不起作用?

entity-framework cascading-deletes ef-code-first entity-framework-4.1

28
推荐指数
1
解决办法
3万
查看次数

如何编辑表以启用CASCADE DELETE?

我有一个代表用户的表.当用户被删除时,我得到:

DELETE语句与REFERENCE约束冲突

显然,CASCADE DELETE并不像我在SQL Server中想象的那么容易,并且需要将选项添加到表中.

问题是:我无法弄清楚如何添加CASCADE DELETE选项.

我正在使用:SQL Server 2008.任何想法如何做到这一点?

sql sql-server sql-server-2008 cascading-deletes

25
推荐指数
3
解决办法
4万
查看次数

在级联删除中触发调用

我在MySQL中有表"A".它有一些参考,级联删除到一些其他表("B","C","D"......).当某些内容从"A"中删除时,我需要使用触发器.当我直接从"A"删除记录时,此触发器有效.但它不适用于级联删除.是否存在任何版本的MySQL,我的触发器将与级联删除一起使用?或者,也许还有另一种方式来打电话

mysql triggers cascade cascading-deletes

25
推荐指数
3
解决办法
9806
查看次数

核心数据关系导致删除后保存错误

这个问题可能是一个长镜头.在删除实体后保存时,我无法弄清楚我在核心数据项目中遇到的错误.我的.xcdatamodel可以在:

http://jump.fm/BXRCG

我有两个与我合作的主要实体,一件衣服和一件物品.我可以毫无问题地创建它们但是当我删除它们时,我得到以下错误日志:

为装备:

2009-09-22 20:17:37.771 itryiton[29027:20b] Operation could not be completed. (Cocoa error 1600.)
2009-09-22 20:17:37.773 itryiton[29027:20b]   {
    NSLocalizedDescription = "Operation could not be completed. (Cocoa error 1600.)";
    NSValidationErrorKey = outfitArticleViewProperties;
    NSValidationErrorObject = <Article: 0x12aa3c0> (entity: Article; id: 0x12b49a0 <x-coredata://7046DA47-FCE1-4E21-8D7B-E532AAC0CC46/Article/p1> ; data: {
    articleID = 2009-09-22 19:05:19 -0400;
    articleImage = 0x12b4de0 <x-coredata://7046DA47-FCE1-4E21-8D7B-E532AAC0CC46/ArticleImage/p1>;
    articleType = nil;
    attributeTitles = "(...not nil..)";
    color = nil;
    comment = nil;
    dateCreated = 2009-09-22 19:05:19 -0400;
    designer = nil;
    imageView = "(...not nil..)";
    location = …
Run Code Online (Sandbox Code Playgroud)

core-data cascading-deletes

23
推荐指数
2
解决办法
9091
查看次数

REMOVE和DELETE有什么区别?

是否有区别:

  • @Cascade(org.hibernate.annotations.CascadeType.REMOVE)和
  • @Cascade(org.hibernate.annotations.CascadeType.DELETE)?

annotations hibernate cascade cascading-deletes

22
推荐指数
1
解决办法
1万
查看次数