SQLAlchemy normally drops tables in order of foreign key dependency so
that there's no need for ALTER.  in the case that two tables have a mutual
foreign key dependency, one of the ForeignKey objects has the
"use_alter=True" flag set so that just the one FK gets dropped first via
ALTER.

[email protected] wrote:
>
> I am encountering a problem with getting the unit tests to run on
> Sybase because of cascades of errors originating from failure to drop
> a table that is referenced by a FK constraint in another table. When
> attempting to drop the people table, I need the SybaseSQLSchemaDropper
> to emit SQL  like this which first does an ALTER TABLE to remove FK
> constraints from all tables which reference people:
>
> 344:1> ALTER TABLE managers  DROP CONSTRAINT managers_1466289798
> 344:2> go
> 345:1> drop table people
> 345:2> go
> 346:1>
>
> How should one deal with the situation when the referring tables are
> not part of the same metadata collection?
>
> pjjH
>
>
>
>
> 341:2> sp__revtable people
> 341:3> go
>  -- Table_DDL
>
> ----------------------------------------------------------------------
>  CREATE TABLE  people
>  (
>   person_id  int  identity                NOT NULL,
>   name       varchar(50)                  NULL,
>   type       varchar(30)                  NULL
>  )
>
>
>
>
>
>
> -----------------------------------------------------------------------------------------------------
> -------------------
>
>         ALTER TABLE people ADD  PRIMARY KEY  CLUSTERED  ( person_id)
> -- FOREIGN REFERENCE
>
>
>
>  ---------------------------------------
>  -- No Indexes found in Current Database
>
> (return status = 0)
> 342:1> sp_helpconstraint people
> 342:2> go
>  name
> definition                                                    created
>  -------------------
> -------------------------------------------------------------
> -------------------
>  managers_1466289798 managers FOREIGN KEY (person_id) REFERENCES people
> (person_id) Mar  4 2009  9:12PM
>  people_17556708171  PRIMARY KEY INDEX ( person_id) : CLUSTERED,
> FOREIGN REFERENCE Mar  4 2009  9:11PM
>
> Total Number of Referential Constraints: 1
>
> Details:
> -- Number of references made by this table: 0
> -- Number of references to this table: 1
> -- Number of self references to this table: 0
>
> Formula for Calculation:
> Total Number of Referential Constraints
> = Number of references made by this table
> + Number of references made to this table
> - Number of self references within this table
>
> (2 rows affected, return status = 0)
>
>
> 343:1> sp__revtable managers
> 343:2> go
>  -- Table_DDL
>
> ----------------------------------------------------------------------
>  CREATE TABLE  managers
>  (
>   person_id     int  identity                NOT NULL,
>   status        varchar(30)                  NULL,
>   manager_name  varchar(50)                  NULL
>  )
>
>
>
>
>
>
> -----------------------------------------------------------------------------------------------------
> -------------------
>
>         ALTER TABLE managers ADD  PRIMARY KEY  CLUSTERED  ( person_id)
>
>
>
>         constraint_desc
>
>
>
>
> -----------------------------------------------------------------------------------------------------
> -------------------------------------------------------------------------------------------------------------
> ---------------------------------------------
>
>         ALTER TABLE managers ADD CONSTRAINT managers_1466289798
> FOREIGN KEY (person_id) REFERENCES people(person_id)
>
>
>
>  ---------------------------------------
>  -- No Indexes found in Current Database
>
> (return status = 0)
>
>
>
>
> >
>


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" 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/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to