From 68953a4ab66cb6361e9545cbb0b29de9aace52ce Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Tue, 21 May 2024 12:25:15 +0100 Subject: [PATCH 1/2] Add trigger to autopopulate primary key on insert --- test/schema/sqlserver_specific_schema.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/schema/sqlserver_specific_schema.rb b/test/schema/sqlserver_specific_schema.rb index 1bef7d0e1..a67885049 100644 --- a/test/schema/sqlserver_specific_schema.rb +++ b/test/schema/sqlserver_specific_schema.rb @@ -266,6 +266,21 @@ SELECT pk_col_one AS id_source, event_name FROM INSERTED SQL + + execute <<-SQL + CREATE TRIGGER instead_of_insert_trigger + ON pk_autopopulated_by_a_trigger_records + INSTEAD OF INSERT + AS + BEGIN + INSERT INTO pk_autopopulated_by_a_trigger_records ( + [id] + ) + SELECT ((COALESCE(MAX(pk_autopopulated_by_a_trigger_records.id), 0) + 1)) + FROM pk_autopopulated_by_a_trigger_records + END + SQL + # Another schema. create_table :sst_schema_columns, force: true do |t| From a228501a492808b247d7d9a02ec039fd66385405 Mon Sep 17 00:00:00 2001 From: Aidan Haran Date: Sat, 8 Jun 2024 17:31:22 +0100 Subject: [PATCH 2/2] Coerce test --- test/cases/coerced_tests.rb | 3 +++ test/schema/sqlserver_specific_schema.rb | 15 --------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/test/cases/coerced_tests.rb b/test/cases/coerced_tests.rb index c4359096d..c68a0f494 100644 --- a/test/cases/coerced_tests.rb +++ b/test/cases/coerced_tests.rb @@ -1267,6 +1267,9 @@ def test_update_coerced assert_not_predicate topic, :approved? assert_equal "The First Topic", topic.title end + + # In SQL Server it's not possible to set the primary key column using a trigger and to get it then to return. + coerce_tests! :test_model_with_no_auto_populated_fields_still_returns_primary_key_after_insert end require "models/author" diff --git a/test/schema/sqlserver_specific_schema.rb b/test/schema/sqlserver_specific_schema.rb index a67885049..1bef7d0e1 100644 --- a/test/schema/sqlserver_specific_schema.rb +++ b/test/schema/sqlserver_specific_schema.rb @@ -266,21 +266,6 @@ SELECT pk_col_one AS id_source, event_name FROM INSERTED SQL - - execute <<-SQL - CREATE TRIGGER instead_of_insert_trigger - ON pk_autopopulated_by_a_trigger_records - INSTEAD OF INSERT - AS - BEGIN - INSERT INTO pk_autopopulated_by_a_trigger_records ( - [id] - ) - SELECT ((COALESCE(MAX(pk_autopopulated_by_a_trigger_records.id), 0) + 1)) - FROM pk_autopopulated_by_a_trigger_records - END - SQL - # Another schema. create_table :sst_schema_columns, force: true do |t|