Sorry, one follow-up. I can actually get this to work by setting cascade='all, delete-orphan'.
New thread here: http://groups.google.com/group/sqlalchemy/browse_thread/thread/4740463f8474ff74 since I would still like SQLAlchemy to not issue any Deletes or Updates, since my FK will handle it. On Sep 30, 2:08 am, Randy Syring <[EMAIL PROTECTED]> wrote: > Thank you for the suggestion, but that doesn't change anything. I > still get an UPDATE statement issued that tries to set the FK id to > NULL, which is invalid and causes SQL logic errors. > > Suggestions on where I can go from here would be really appreciated. > I am really stuck on this. All I need to do is shut that off and > things would work fine. > > On Sep 29, 3:31 am, "Sok Ann Yap" <[EMAIL PROTECTED]> wrote: > > > On Mon, Sep 29, 2008 at 7:01 AM, Randy Syring <[EMAIL PROTECTED]> wrote: > > > > I have a ManyToOne() relationship defined with both required=True, and > > > ondelete='cascade'. When deleting a record from the parent table, > > > Elixir is trying to update related records in the child table and set > > > the parent_id = Null, which is invalid since it is a NOT NULL column. > > > If I remove the corresponding field in the parent object, I don't have > > > the problem any more. Any ideas? > > > > My object defs: > > > > class ContentBaseAttributeCategory(Entity): > > > > name = Field(Unicode(255), required=True, unique=True, index=True) > > > display = Field(Unicode(1000)) > > > inactive = Field(Boolean, required=True, server_default=text("0")) > > > created = Field(DateTime, required=True, > > > default=datetime.datetime.now) > > > last_edited = Field(DateTime, onupdate=datetime.datetime.now) > > > ## if uncommented, SQL errors are generated > > > #attributes = OneToMany('ContentBaseAttribute') > > > > using_options(tablename="contentbase_attribute_categories") > > > > class ContentBaseAttribute(Entity): > > > > category = ManyToOne('ContentBaseAttributeCategory', > > > required=True, ondelete='cascade') > > > name = Field(Unicode(255), required=True) > > > display = Field(Unicode(1000)) > > > sort_order = Field(Integer, required=True, > > > server_default=text("0")) > > > inactive = Field(Boolean, required=True, server_default=text("0")) > > > created = Field(DateTime, required=True, > > > default=datetime.datetime.now) > > > last_edited = Field(DateTime, onupdate=datetime.datetime.now) > > > items = ManyToMany('ContentBaseItem', > > > tablename='contentbase_attribute_item_map', ondelete='cascade') > > > > using_options(tablename="contentbase_attributes") > > > > def get_catname(self): > > > return self.category.name > > > > catname = property(get_catname) > > > Try adding cascade='all, delete-orphan' to the OneToMany relationship. > > You can read more about this > > here:http://www.sqlalchemy.org/docs/04/documentation.html#unitofwork_cascades --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "SQLElixir" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlelixir?hl=en -~----------~----~----~----~------~----~------~--~---
