Jac*_*ack 0 sql t-sql sql-server
所以,我正在尝试做一些非常简单的事情; 更改表并添加外键约束.问题是它给我一个错误,关于列的排序规则不匹配:
列blah与外键中的列blah引用的排序不一样.
我不明白这一点,我到处都看.当我查看SQL属性页面时,它显示相同的排序规则(Latin1_General_CI_AS).我到处寻找,我不知道如何改变这一点.任何可以帮助的人都将不胜感激.谢谢!
尝试比较SQL Server中的两个字符串时,排序规则必须匹配,否则会出现此错误.排序规则告诉SQL Server如何比较字符串(即CHAR,NCHAR,VARCHAR,NVARCHAR).排序规则Latin1_General_CI_AS使用Latin1_General字符集,不区分大小写,区分重音.
在我给出解决方案之前您需要了解的一些内容:SQL Server中有三个级别的排序规则:
为了解决您的问题,您需要更改您要比较的两个字段之一的排序规则,以使它们相同.更改两者以匹配数据库的排序规则可能是您的最佳做法:
ALTER TABLE MyMaster ALTER COLUMN MyMasterKey VARCHAR(30) COLLATE LATIN1_General_CI_AS
ALTER TABLE MyDetail ALTER COLUMN MyMasterKey VARCHAR(30) COLLATE LATIN1_General_CI_AS
Run Code Online (Sandbox Code Playgroud)
然后你就可以定义外键了:
ALTER TABLE MyDetail ADD CONSTRAINT FK_Master_Detail FOREIGN KEY (MyMasterKey) REFERENCES MyMaster(MyMasterKey)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6522 次 |
| 最近记录: |