2

I am using merge replication in SQL 2012.

Why can't you mark default constraints as NOT FOR REPLICATION? You can disable all default constraints for a merge article, but it is all or nothing so it doesn't seem to offer enough control.

How about this scenario,

  1. The user inserts a record 'Shape' at a client
  2. The 'Shape' has a default constraint to set the NumberOfSides field to 4
  3. The client user edits the value of NumberOfSides and sets it to 5
  4. They sync with the server

When they sync with the server won't it repeat the default constraint and set the value of 'NumberOfSides' back to 4?

Am I missing something here?

I don't want to disable the default constraints being replicated to the client either because there are valid default values that need to be set. The client side user needs to have these values set to use the software.

UPDATE:

The explanation about the default constraint being applied only once makes sense.

So my only remaining question is if I have default contraints which use sequences I am in trouble because sequences cannot be replicated. Are these my only two options?

  1. Turn off all default constraints for a particular table (not ideal if some of them are not for sequences)
  2. Create the sequences manually at the client side, and then create a custom handler to apply the correct sequence values at the server when syncing

1 Answer 1

3

When data is replicated from one server to another using SQL Replication all the values which were inserted into the row are sent along. Default constraints only apply when no value has been specified for the column. If the user specifies a value of 5 then 5 will be replicated and inserted into the table.

2
  • Makes sense. I have updated the question.
    – peter
    Commented Aug 21, 2012 at 23:56
  • In this case I would probably just create the sequences manually on the remote side. That or stick with replicatable objects like the identity property.
    – mrdenny
    Commented Aug 22, 2012 at 23:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.