(cls, metadata)
| 23 | |
| 24 | @classmethod |
| 25 | def define_tables(cls, metadata): |
| 26 | dt = Table( |
| 27 | "dt", |
| 28 | metadata, |
| 29 | Column( |
| 30 | "id", Integer, primary_key=True, test_needs_autoincrement=True |
| 31 | ), |
| 32 | Column("col1", String(20)), |
| 33 | Column( |
| 34 | "col2", String(20), server_default=sa.schema.FetchedValue() |
| 35 | ), |
| 36 | Column( |
| 37 | "col3", String(20), sa.schema.FetchedValue(for_update=True) |
| 38 | ), |
| 39 | Column( |
| 40 | "col4", |
| 41 | String(20), |
| 42 | sa.schema.FetchedValue(), |
| 43 | sa.schema.FetchedValue(for_update=True), |
| 44 | ), |
| 45 | implicit_returning=False, |
| 46 | ) |
| 47 | |
| 48 | dialect_name = testing.db.dialect.name |
| 49 | |
| 50 | for ins in ( |
| 51 | sa.DDL( |
| 52 | "CREATE TRIGGER dt_ins AFTER INSERT ON dt " |
| 53 | "FOR EACH ROW BEGIN " |
| 54 | "UPDATE dt SET col2='ins', col4='ins' " |
| 55 | "WHERE dt.id = NEW.id; END" |
| 56 | ).execute_if(dialect="sqlite"), |
| 57 | sa.DDL( |
| 58 | "CREATE TRIGGER dt_ins ON dt AFTER INSERT AS " |
| 59 | "UPDATE dt SET col2='ins', col4='ins' " |
| 60 | "WHERE dt.id IN (SELECT id FROM inserted);" |
| 61 | ).execute_if(dialect="mssql"), |
| 62 | sa.DDL( |
| 63 | "CREATE TRIGGER dt_ins BEFORE INSERT " |
| 64 | "ON dt " |
| 65 | "FOR EACH ROW " |
| 66 | "BEGIN " |
| 67 | ":NEW.col2 := 'ins'; :NEW.col4 := 'ins'; END;" |
| 68 | ).execute_if(dialect="oracle"), |
| 69 | sa.DDL( |
| 70 | "CREATE TRIGGER dt_ins BEFORE INSERT " |
| 71 | "ON dt " |
| 72 | "FOR EACH ROW " |
| 73 | "EXECUTE PROCEDURE my_func_ins();" |
| 74 | ).execute_if(dialect="postgresql"), |
| 75 | sa.DDL( |
| 76 | "CREATE TRIGGER dt_ins BEFORE INSERT ON dt " |
| 77 | "FOR EACH ROW BEGIN " |
| 78 | "SET NEW.col2='ins'; SET NEW.col4='ins'; END" |
| 79 | ).execute_if( |
| 80 | callable_=lambda ddl, target, bind, **kw: bind.engine.name |
| 81 | not in ("oracle", "mssql", "sqlite", "postgresql") |
| 82 | ), |
nothing calls this directly
no test coverage detected