summaryrefslogtreecommitdiff
path: root/test/dialect/test_mssql.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2012-04-05 14:31:28 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2012-04-05 14:31:28 -0400
commit4cb74452fe551c3d4f0dd305bee1e69dbdccd99a (patch)
tree2759e0df35e59fde505492bd67a19415999968f3 /test/dialect/test_mssql.py
parent879e6bc462403933fdadc17b700e231eba3207db (diff)
downloadsqlalchemy-4cb74452fe551c3d4f0dd305bee1e69dbdccd99a.tar.gz
- [bug] Repaired the use_scope_identity
create_engine() flag when using the pyodbc dialect. Previously this flag would be ignored if set to False. When set to False, you'll get "SELECT @@identity" after each INSERT to get at the last inserted ID, for those tables which have "implicit_returning" set to False.
Diffstat (limited to 'test/dialect/test_mssql.py')
-rw-r--r--test/dialect/test_mssql.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/test/dialect/test_mssql.py b/test/dialect/test_mssql.py
index dddc6333d..2b35ff57f 100644
--- a/test/dialect/test_mssql.py
+++ b/test/dialect/test_mssql.py
@@ -750,7 +750,8 @@ class QueryUnicodeTest(fixtures.TestBase):
finally:
meta.drop_all()
-class QueryTest(fixtures.TestBase):
+from test.lib.assertsql import ExactSQL
+class QueryTest(testing.AssertsExecutionResults, fixtures.TestBase):
__only_on__ = 'mssql'
def test_fetchid_trigger(self):
@@ -818,6 +819,27 @@ class QueryTest(fixtures.TestBase):
con.execute("""drop trigger paj""")
meta.drop_all()
+ @testing.provide_metadata
+ def test_disable_scope_identity(self):
+ engine = engines.testing_engine(options={"use_scope_identity":False})
+ metadata = self.metadata
+ metadata.bind = engine
+ t1 = Table('t1', metadata,
+ Column('id', Integer, primary_key=True),
+ implicit_returning=False
+ )
+ metadata.create_all()
+
+ self.assert_sql_execution(
+ testing.db,
+ lambda: engine.execute(t1.insert()),
+ ExactSQL("INSERT INTO t1 DEFAULT VALUES"),
+ # we dont have an event for
+ # "SELECT @@IDENTITY" part here.
+ # this will be in 0.8 with #2459
+ )
+ assert not engine.dialect.use_scope_identity
+
def test_insertid_schema(self):
meta = MetaData(testing.db)
con = testing.db.connect()