|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
也就是说在php本地调用pdoprepare中的mysql_real_escape_string来操作query,使用的是本地单字节字符集,即编码为xbfx5cx27,并带入到mysql中查询,由于使用setnames设置了连接字符集.
我们晓得,在SQLSERVER企业办理器中,在“计划表”形态下,当检察该表的CHECK束缚时,会看到CHECK束缚有“创立中反省现存数据”、“对复制强迫束缚”、“对INSERT和UPDATE强迫束缚”三个复选框,那末假如不在企业办理器情况下,大概在使用程序中,我们怎样得知某个CHECK束缚的这三个选项是不是选中呢?
我检察了相干体系表的匡助申明,但内里对很多多少字段的申明都为“保存”、“仅供外部利用”等,没有字段的感化申明。但我发明当改动三个选项的选中形态时,sysobjects中响应CHECK束缚纪录的status字段值产生改动,为了得知个中是不是有纪律可循,我做了以下测试并得出一些结论,拿出来共享。
“创立中反省现存数据”、“对复制强迫束缚”、“对INSERT和UPDATE强迫束缚”三项属性分离对应000的三位,0为不选,1为选中。
创建一个测试表,为其创建列级CHECK束缚和表级CHECK束缚,先令其为空表。
上面了局中,等号右边为三个属性的选中形态,右侧为sysobjects表中束缚纪录的status字段值:
关于列级束缚:
000=3330
001=3074
010=2306
011=2050
100=3330(保留后仍未选中,不知为什么)
101=3074
110=2306
111=2
发明除111外,其他首位为1均作为0对待。
关于表级束缚:
000=3328
001=3072
010=2304
011=2048
100=3328
101=3072
110=2304
111=0
可发明与列级束缚有一样的成绩,同时,关于不异的二进制值,表级束缚比列级束缚少2。
但值得注重的是,以上测试是在表中有数据的情形下,故大概引发三位二进制数的最高位偶然义。上面测试表中无数据的了局(在测试表中拔出了切合各CHECK束缚的数据):
关于列级束缚:
000=3330
001=3074
010=2306
011=2050
100=3330
101=3074
110=2306
111=2
关于表级束缚:
000=3328
001=3072
010=2304
011=2048
100=3328
101=3072
110=2304
111=0
可见了局完整不异。
推测缘故原由是“创立中反省现存数据”一项只在CHECK束缚保留刹时感化,保留后体系行将其作废,故若检察已有的CHECK束缚,该选项已偶然义,故为不选中形态。
但在pubs库中,发明体系已有的一些CHECK束缚的status初始值为6,不知何解?不外修正后与以上了局符合。
MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。 |
|