1

MySql で更新可能なビューを作成しようとしていますが、結果は更新できません。Attrepgen は、最初のフィールド (aidx = numauto) が PK であるテーブルです。

attrepusr が更新できない理由は何ですか?

CREATE 
    ALGORITHM = UNDEFINED 
    DEFINER = `root`@`%` 
    SQL SECURITY DEFINER
VIEW `attrepusr` AS
    select 
        `attrepgen`.`Aidx` AS `Aidx`,
        `attrepgen`.`IsOffset` AS `IsOffset`,
        `attrepgen`.`Dt` AS `Dt`,
        `attrepgen`.`Owner` AS `Owner`,
        `attrepgen`.`P1` AS `P1`,
        `attrepgen`.`P2` AS `P2`,
        `attrepgen`.`P3` AS `P3`,
        `attrepgen`.`P4` AS `P4`,
        `attrepgen`.`P5` AS `P5`,
        `attrepgen`.`P6` AS `P6`,
        `attrepgen`.`Target` AS `Target`,
        `attrepgen`.`Attend` AS `Attend`,
        `attrepgen`.`Delta` AS `Delta`,
        `attrepgen`.`Remark` AS `Remark`,
        `attrepgen`.`Cat` AS `Cat`
    from
        `attrepgen`
    where
        (`attrepgen`.`Owner` = current_user())

情報については、テーブル attrepgen :

CREATE TABLE `attrepgen` (
  `Aidx` int(11) NOT NULL AUTO_INCREMENT,
  `IsOffset` tinyint(1) NOT NULL,
  `Dt` date NOT NULL,
  `Owner` varchar(16) NOT NULL,
  `P1` time DEFAULT NULL,
  `P2` time DEFAULT NULL,
  `P3` time DEFAULT NULL,
  `P4` time DEFAULT NULL,
  `P5` time DEFAULT NULL,
  `P6` time DEFAULT NULL,
  `Target` decimal(7,3) NOT NULL,
  `Attend` decimal(7,3) NOT NULL,
  `Delta` decimal(7,3) NOT NULL,
  `Remark` varchar(32) DEFAULT NULL,
  `Cat` varchar(1) DEFAULT NULL,
  PRIMARY KEY (`Aidx`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

私は少し困惑しています。

4

1 に答える 1

0

わかりました。私のベースには、実際には Access のフロントエンドがあると言わざるを得ません。ワークベンチでフィールドを変更しようとすると、そのばかは受け入れません (「読み取り専用」と言い続けます)。しかし、フロントエンドでビューを再リンクすると、今度はそこから行を変更できました。

おそらく、ワークベンチは単にビューでの変更を許可していませんが、ソース テーブルで直接変更することを望んでいます。

知っておいたほうがいい。

皆さんのおかげで、私たちが一人ではないことを知ることができて良かったです (暗闇の中で) :p

于 2015-07-01T09:11:02.627 に答える